summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorsabetts <sabetts>2004-04-18 23:59:26 +0000
committersabetts <sabetts>2004-04-18 23:59:26 +0000
commit366c3fac7c52becf29ff3be0b56b66d9efdecde5 (patch)
tree5cc40176d0085f06b72060bb9a6b4657bdc94e8e /doc
parent2f1174b2fabbad0b0499760fa91d64f9d25bc23d (diff)
downloadratpoison-366c3fac7c52becf29ff3be0b56b66d9efdecde5.zip
documentation refactoring
Diffstat (limited to 'doc')
-rw-r--r--doc/ratpoison.texi1224
1 files changed, 689 insertions, 535 deletions
diff --git a/doc/ratpoison.texi b/doc/ratpoison.texi
index a54e4f2..856427d 100644
--- a/doc/ratpoison.texi
+++ b/doc/ratpoison.texi
@@ -79,28 +79,45 @@ This document explains how to use ratpoison.
@end ifinfo
@menu
-* About:: What is ratpoison?
-* Contacting:: How do I contact the ratpoison developers?
-* Concepts:: Window manipulation concepts
-* Groups:: Grouping windows together
-* General Use:: How does this thing work??
-* Splitting Frames:: When you want to see more than one window
-* Multiple Monitors:: What to do with all your computer junk
-* Keystrokes:: Key commands and functionality
-* Commands:: ratpoison commands
-* Input:: Typing text into ratpoison
-* Command Line Arguments:: ratpoison command-line actions
-* Startup file:: They threatened me...with violence!
+* About:: What Is Ratpoison?
+* Contacting:: How Do I Contact The Ratpoison Developers?
+* Concepts:: Window Manipulation Concepts
+* General Use:: How Does This Thing Work??
+* Windows:: Navigating The Windows
+* Groups:: Grouping Windows Together
+* Frames:: Dividing The Screen
+* Multiple Monitors:: What To Do With All Your Computer Junk
+* Keystrokes:: Key Commands And Functionality
+* Hooks:: Attaching Scripts To Ratpoison Events
+* The Status Bar:: Ratpoison's Input/Output Area
+* Using Other Window Managers:: Return To Evil
+* Other Commands:: Miscellaneous Commands
+* Input:: Typing Text Into Ratpoison
+* Command Line Arguments:: ratpoison Command-Line Actions
+* Startup file:: They Threatened Me...With Violence!
* Command Index:: Index
@detailmenu
--- The Detailed Node Listing ---
-Splitting Frames
+Windows
+* Manipulating Windows::
+* Unmanaged Windows::
+* Rudeness::
+
+Frames
+
+* Splitting Frames::
* Resizing Frames::
+* Frame Navigation Commands::
* Saving and Restoring Frame Sets::
+Keystrokes
+
+* Key Maps::
+* Default Key Bindings::
+
@end detailmenu
@end menu
@@ -131,7 +148,7 @@ and for the list archives go to the ratpoison sourceforge.net project.
There is a #ratpoison irc channel on irc.openprojects.net.
-@node Concepts, Groups, Contacting, Top
+@node Concepts, General Use, Contacting, Top
@chapter Concepts
ratpoison uses the concept of @dfn{panes} to place and size
@@ -172,26 +189,7 @@ creates a window it will be added to the current group. Groups are
generally used to organize windows into different classes such as work
and wasting-time-at-work.
-@node Groups, General Use, Concepts, Top
-@chapter Groups
-ratpoison provides functionality to group windows together. This
-coupled with saving and restoring frames configurations is what most
-people would call @dfn{virtual desktops} or @dfn{workspaces}.
-
-While ratpoison doesn't explicity provide support for such things, it
-does allow you to write scripts to this end. Such a script exists in
-@file{contrib/} called @file{rpws}. Consult that file for details on
-seting up workspaces inside ratpoison.
-
-Groups are more general purpose than workspaces. windows from one
-group can be visible along with windows from another group. If you
-switch to a different group nothing changes except the list of windows
-you can cycle through. ratpoison allows the user to move a window from
-one group to another, merge two groups, create new groups, and delete
-existing ones. @xref{Commands}, for information on the commands for
-manipulating groups.
-
-@node General Use, Splitting Frames, Groups, Top
+@node General Use, Windows, Concepts, Top
@chapter General Use
When ratpoison starts you should see an empty X server. To open an x
@@ -215,11 +213,347 @@ how we didn't have to drag a single window, or click a single maximize
button? Beautiful wasn't it? Felt fast? Cool? It's modern computing at
its best.
-@node Splitting Frames, Multiple Monitors, General Use, Top
-@chapter Splitting Frames
+@node Windows, Groups, General Use, Top
+@chapter Windows
+
+Windows are what ratpoison manages.
+
+@menu
+* Manipulating Windows::
+* Unmanaged Windows::
+* Rudeness::
+@end menu
+
+@node Manipulating Windows, Unmanaged Windows, Windows, Windows
+@section Manipulating Windows
+
+The following are commands used to manipulate windows.
+
+@deffn Command select @var{n}
+This jumps you to window @var{n} where @var{n} is the window number as
+shown in the Program Bar. You can do the same trick with
+@command{C-@var{n}} too. To select no window, blanking the current
+frame, type @samp{select -}.
+@end deffn
+
+@deffn Command select @var{window-name}
+Go to a window by name. A shortcut is @kbd{C-t '}.
+@end deffn
+
+@deffn Command windows @var{fmt}
+This displays the Program Bar which displays the windows you currently
+have running. The number before each window name is used to jump to
+that window. You can do this by typing @kbd{C-t @var{n}} where @var{n}
+is the number of the window. Note that only windows with numbers from
+0 to 9 can be referenced using this keystroke. To reach windows with
+numbers greater than 9, use @kbd{C-t '} and type the number at the
+prompt.
+
+After 5 seconds the Program Bar disappears.
+
+This command is bound to @kbd{C-t w} by default.
+
+When invoked from the command-line like this,
+
+@example
+$ ratpoison -c windows
+@end example
+
+Instead of a message bar, you will get a list of the windows printed
+to stdout. This allows you to write more advanced scripts than simple
+keyboard macros. This is where @var{fmt} comes into play. If
+@command{windows} is given an arg it treats it as the format string as
+described in @command{defwinfmt}.
+@end deffn
+
+@deffn Command title @var{title}
+Rename the currently active window. This name will remain for the
+duration of the window's life, unless you change it again. By default,
+the @kbd{C-t A} keystroke is bound to this command.
+@end deffn
+
+@deffn Command other
+This toggles between the current window and the last window. By
+default, this is bound to @kbd{C-t C-t}.
+@end deffn
+
+@deffn Command prev
+This jumps you to the previous window in the window list. By default,
+this is bound to @kbd{C-t p}.
+@end deffn
+
+@deffn Command next
+This jumps you to the next window in the window list. This one is
+bound to three keystrokes, namely @kbd{C-t n}, @kbd{C-t space},
+and @kbd{C-t enter}.
+@end deffn
+
+@deffn Command kill
+This destroys the current window. Normally you should only need to
+use @command{delete}, but just in case you need to rip the heart out of a
+misbehaving window this command should do the trick. Also available as
+@kbd{C-t K}.
+@end deffn
+
+
+@deffn Command info
+Display information about the current window.
+@end deffn
+
+@deffn Command gravity @var{g}
+Change the gravity of the current window. A normal window will default
+to the top-left corner of the screen, but it can also be placed at the
+bottom-right corner of the screen. Valid values for @var{g} are the 8
+directions @samp{northwest}, @samp{north}, @samp{northeast},
+@samp{east}, @samp{southeast}, @samp{south}, @samp{southwest} and
+@samp{west}, clockwise from the top left corner. @samp{center} will
+center the window in the frame. @var{g} and can be abbreviated to the
+standard compass 1 and 2 letter abbreviations (i.e. @samp{nw},
+@samp{s}, etc).
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command delete
+This deletes the current window. You can access it with the @kbd{C-t k}
+keystroke.
+@end deffn
+
+@deffn Command defwinname @var{name}
+There are three resources ratpoison can get a window's name from: the
+WMNAME hint, the res_name from the WMCLASS hint, or the res_class from
+the WMCLASS hint. @var{name} can be @samp{title} which is what most
+window managers put in the title bar, @samp{name} which is the
+res_name, or @samp{class} which is the res_class.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command defwingravity @var{g}
+Set the default gravity for normal windows. See the
+@command{gravity} command.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command defwinliststyle @var{setting}
+The window list can be displayed in a row or a column. @var{setting}
+can be @samp{row} or @samp{column}.
+@end deffn
+
+@deffn Command defwinfmt @var{fmt}
+Set the default window format for the @command{windows} command. By
+default it is @samp{%n%s%t}. The following is a list of valid format
+characters:
+
+@table @samp
+@item %n
+The window number
+@item %s
+Window status (current window, last window, etc)
+@item %t
+Window Name
+@item %a
+Application Name
+@item %c
+Resource Class
+@item %i
+X11 Window ID
+@item %l
+A unique number based on when the window was last accessed. The higher
+the number, the more recently it was accessed.
+@end table
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command number @var{n} @var{target}
+Set a window's number to @var{n}. If another window occupies the
+requested number already, then the windows' numbers are swapped.
+
+The second argument, @var{target}, is optional. It should be the
+number of the window whose number will be changed. If @var{target} is
+omitted ratpoison defaults to the current window.
+@end deffn
+
+@deffn Command deftransgravity @var{g}
+Set the default alignment for transient windows. See the
+@command{gravity} command.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command defmaxsizegravity @var{g}
+Set the default alignment for windows with maxsize hints. See the
+@command{gravity} command.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@deffn Command defborder @var{n}
+Set the border width for all windows.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@node Unmanaged Windows, Rudeness, Manipulating Windows, Windows
+@section Unmanaged Windows
+
+ratpoison can intentionally not manage windows. ratpoison keeps a list
+of strings and if any new window's name matches a string in the list,
+then it will not be picked up and managed by ratpoison.
+
+The following are commands to manipulate this list
+
+
+@deffn Command clrunmanaged
+Clear the unmanaged window list.
+@end deffn
+
+@deffn Command unmanage @var{text}
+Add @var{text} to the unmanaged window list. Any window whose name
+matches any of the strings in the unmanaged window list will not be
+handled in any way by ratpoison. This only applies to new windows (not
+windows already managed by ratpoison).
+
+When called non-interactively with no arguments, the list is returned.
+@end deffn
+
+@node Rudeness, , Unmanaged Windows, Windows
+@section Rudeness
+
+Some programs will attempt to steal the focus without the users
+permission. Not only is this a sign of a lame programmers attempt to fix
+a window manager problem in the wrong place, it's just plain rude. By
+default ratpoison will honour these rudeness requests, but it doesn't
+have to. Use the @command{rudeness} command to deal with such programs.
+
+@deffn Command rudeness @var{n}
+The rudeness command lets you decide what windows pop-up automatically
+and when. This is often useful for those deep hack sessions when you
+absolutely can't be disturbed.
+
+There are two kinds of windows: normal windows (like an xterm) and
+transient windows (generally pop-up dialog boxes). When a client
+program wants to display a new window it makes a requests to
+ratpoison. ratpoison then decides whether to grant the request and
+display the window or ignore it. A client program can also request
+that one of its windows be raised. You can customize ratpoison to
+either honour these requests (the default operation) or ignore them.
+
+@var{n} is a number from 0 to 15. Each of the four bits determine
+which requests ratpoison grants.
+
+@table @asis
+@item Bit 0
+Tells ratpoison to grant raise requests on transient windows
+
+@item Bit 1
+Tells ratpoison to grant raise requests on normal windows
+
+@item Bit 2
+Tells ratpoison to grant display requests on new transient windows
+
+@item Bit 3
+Tells ratpoison to grant display requests on new normal windows
+@end table
+
+For example, if you wanted only wanted to grant transient windows
+raise requests and display requests you would type @samp{rudeness
+5}. If a request is not granted ratpoison will tell you about the
+request with a message like @samp{Raise request from window 1
+(emacs)}.
+
+When called non-interactively with no arguments, the current setting is
+returned.
+@end deffn
+
+@node Groups, Frames, Windows, Top
+@chapter Groups
+ratpoison provides functionality to group windows together. This
+coupled with saving and restoring frames configurations is what most
+people would call @dfn{virtual desktops} or @dfn{workspaces}.
+
+While ratpoison doesn't explicity provide support for such things, it
+does allow you to write scripts to this end. Such a script exists in
+@file{contrib/} called @file{rpws}. Consult that file for details on
+seting up workspaces inside ratpoison.
+
+Groups are more general purpose than workspaces. windows from one
+group can be visible along with windows from another group. If you
+switch to a different group nothing changes except the list of windows
+you can cycle through. ratpoison allows the user to move a window from
+one group to another, merge two groups, create new groups, and delete
+existing ones.
+
+The following is a list of of commands used for manipulating groups.
+
+@deffn Command gnew @var{name}
+Create a new group with the name @var{name}. @var{name} is
+optional. This new group becomes the new group.
+@end deffn
+
+@deffn Command gnewbg @var{name}
+This is the same as @command{gnew} except that the current group does
+not change.
+@end deffn
+
+@deffn Command groups
+Display a list of groups with a similar format to @command{windows}.
+@end deffn
+
+@deffn Command gmove @var{group}
+Move the current window to @var{group}.
+@end deffn
+
+@deffn Command gnext
+Go to the next group in the list.
+@end deffn
+
+@deffn Command gprev
+Go to the previous group in the list.
+@end deffn
+
+@deffn Command gselect @var{group}
+Select a particular group by name or number. If @var{group} is not
+provided, ratpoison will interactively prompt for the group.
+@end deffn
+
+@deffn Command gmerge @var{group}
+Merge @var{group} with the current group. All windows in @var{group}
+will be moved to the current group. @var{group} is not deleted.
+@end deffn
+
+@deffn Command gdelete @var{group}
+Delete a group. @var{group} is optional. If it is not specified
+ratpoison will attempt to delete the current group. Only empty groups
+can be deleted. To empty a group see @command{gmerge}.
+@end deffn
+
+@node Frames, Multiple Monitors, Groups, Top
+@chapter Frames
Sometimes you may want to see two or more windows at the same
time. ratpoison allows you to split the display into frames (see
-@ref{Concepts}). Each frame can then contain 1 window. To split the
+@ref{Concepts}). Each frame can then contain 1 window.
+
+@menu
+* Splitting Frames::
+* Resizing Frames::
+* Frame Navigation Commands::
+* Saving and Restoring Frame Sets::
+@end menu
+
+@node Splitting Frames, Resizing Frames, Frames, Frames
+@section Splitting Frames
+
+To split the
current frame horizontally use @kbd{C-t s}. To split the current frame
vertically use @kbd{C-t S}. If you have enough windows, you'll notice
that the new frame will find a window for itself. You can now use the
@@ -237,12 +571,48 @@ Finally, when you've had enough of the splitting and you just want
good ol' full screen ratpoison press @kbd{C-t Q} to remove all splits
and leave you with the current window full screen.
-@menu
-* Resizing Frames::
-* Saving and Restoring Frame Sets::
-@end menu
+@deffn Command remove
+Kill the current frame. This is a no-op if there is only one frame.
+@end deffn
-@node Resizing Frames, Saving and Restoring Frame Sets, Splitting Frames, Splitting Frames
+@deffn Command only
+Kill all frames but the current one.
+@end deffn
+
+@deffn Command split @var{n}
+@deffnx Command vsplit @var{n}
+Split the current frame vertically in two. The last accessed window
+not occupying a frame will be the second window.
+
+@var{n} is either a fraction of the form @code{x/y} or a number. If it
+is a fraction then the current frame is resized to that fraction of
+its original size and the new frame takes up the remaining space. For
+instance, @code{split 1/4} will split the current frame to a quarter
+of its original size and the new frame will then be 3/4 of the size of
+the original frame.
+
+If it is a pixel, the original frame is resized to that many
+pixels. If @var{n} has a minus sign before it, then the new frame will
+shrink by that many pixels.
+@end deffn
+
+@deffn Command hsplit @var{n}
+Split the current frame horizontally in two. The last accessed window
+not occupying a frame will be the second window.
+
+@var{n} is either a fraction of the form @code{x/y} or a number. If it
+is a fraction then the current frame is resized to that fraction of
+its original size and the new frame takes up the remaining space. For
+instance, @code{split 1/4} will split the current frame to a quarter
+of its original size and the new frame will then be 3/4 of the size of
+the original frame.
+
+If it is a pixel, the original frame is resized to that many
+pixels. If @var{n} has a minus sign before it, then the new frame will
+shrink by that many pixels.
+@end deffn
+
+@node Resizing Frames, Frame Navigation Commands, Splitting Frames, Frames
@section Resizing Frames
ratpoison provides a command, @command{resize}, that resizes the
current frame. It is bound to the key @kbd{C-t r} by
@@ -276,7 +646,71 @@ Abort and restore the frame to its original size.
The increment size used to resize the frame interactively is
customized with the command @command{defresizeunit}.
-@node Saving and Restoring Frame Sets, , Resizing Frames, Splitting Frames
+@deffn Command defresizeunit @var{pixels}
+Set the number of pixels a frame will grow or shrink by when being
+dynamically resized.
+@end deffn
+
+@deffn Command resize @var{horizontal} @var{vertical}
+Resize the current frame by @var{horizontal} pixels horizontally, and
+@var{vertical} pixels vertically. If no arguments are given and the
+command is called interactively, ratpoison will let the user
+dynamically resize the frame using @kbd{C-p} to shrink vertically,
+@kbd{C-n} to grow vertically, @kbd{C-b} to shrink horizontally,
+@kbd{C-f} to grow horizontally, and @kbd{s} to shrink the frame to the
+size of the window (See the @command{shrink} command). When you have
+resized the frame to your liking, press @kbd{Return} to finish.
+@end deffn
+
+@deffn Command shrink
+If a window has resize increment hints, such as xterms, the window may
+not be able to take up the whole frame. In this case, use this command
+to suck the frame up to the to window, reclaiming any wasted space.
+@end deffn
+
+@node Frame Navigation Commands, Saving and Restoring Frame Sets, Resizing Frames, Frames
+@section Frame Navigation Commands
+
+Here are the commands for Navigating frames.
+
+@deffn Command fselect @var{n}
+Select a frame by number. If an argument is passed to it then attempt
+to select the frame whose number is @var{n}. If not, ratpoison will
+print a number at the top left corner of each frame and wait for the
+user to type the number they wish to select. Currently there is no way
+to select a frame whose number is greater than 9 unless the number is
+passed as an argument.
+@end deffn
+
+@deffn Command curframe
+Indicate which frame is the current frame.
+@end deffn
+
+@deffn Command focus
+cycle through ratpoison's frames.
+@end deffn
+
+@deffn Command focusdown
+Move to the frame below the current frame.
+@end deffn
+
+@deffn Command focuslast
+Switch to the last focused frame.
+@end deffn
+
+@deffn Command focusleft
+Move to the frame left of the current frame.
+@end deffn
+
+@deffn Command focusright
+Move to the frame right of the current frame.
+@end deffn
+
+@deffn Command focusup
+Move to the frame above the current frame.
+@end deffn
+
+@node Saving and Restoring Frame Sets, , Frame Navigation Commands, Frames
@section Saving and Restoring Frame Sets
ratpoison provides two commands, @command{fdump} and
@command{frestore}, that allow the user to save and restore frame
@@ -298,7 +732,19 @@ the layout by hand each time is a bit cumbersome. There are some
simple bindings in @file{doc/sample.ratpoisonrc} that allow you to
save and restore frame layouts with the press of a key.
-@node Multiple Monitors, Keystrokes, Splitting Frames, Top
+@deffn Command fdump
+dump the current frame layout as text. When used non-interactively
+(from the command-line), ratpoison will print the frame layout. When
+used interactively, nothing happens.
+@end deffn
+
+@deffn Command frestore @var{frames}
+Restore the frame layout based on the list of frames
+@var{frames}. @var{frames} should be the text that was printed after
+calling @code{fdump}.
+@end deffn
+
+@node Multiple Monitors, Keystrokes, Frames, Top
@chapter Multiple Monitors
When you've finally accumulated enough computer junk, you'll find
youself attaching a second monitor to your computer. ratpoison has
@@ -319,9 +765,91 @@ current screen. If you want to switch to the other xterm you can
switch to it by name (use @command{select} or @kbd{C-t '}), by number,
or you can use @command{nextscreen} and @command{prevscreen}.
-@node Keystrokes, Commands, Multiple Monitors, Top
+@deffn Command nextscreen
+This jumps you to the next X11 screen. @command{nextscreen} is
+used for dual-head displays and multiple monitor setups.
+@end deffn
+
+@deffn Command prevscreen
+This jumps you to the previous X11 screen. @command{prevscreen} is
+used for dual-head displays and multiple monitor setups.
+@end deffn
+
+
+@node Keystrokes, Hooks, Multiple Monitors, Top
@chapter Keystrokes
+Interactive control of ratpoison is done entirely through
+keystrokes. This chapter explains how keystrokes are stored and
+manipulated.
+
+@menu
+* Key Maps::
+* Default Key Bindings::
+@end menu
+
+@node Key Maps, Default Key Bindings, Keystrokes, Keystrokes
+@section Key Maps
+
+All keystrokes exist inside a keymap. When you press the prefix key you
+are accessing the @samp{root} keymap. By default all commands reside in
+the @samp{root} key map and are accessed by pressing @kbd{C-t}.
+
+There is also a top level key map, @samp{top}. Any keystroke in this key
+map can be accessed simply by pressing the key. This is where the prefix
+key resides.
+
+The following functions control creating, editing, and deleting key maps.
+
+@deffn Command newkmap @var{kmap}
+Create a new keymap named @var{kmap}.
+@end deffn
+
+@deffn Command delkmap @var{kmap}
+Delete the keymap, @var{kmap}.
+@end deffn
+
+@deffn Command bind @var{Key} @var{command}
+Bind a key to a ratpoison command. This command takes two arguments: the
+key to bind and the command to run. For example, to bind @kbd{C-t R} to
+restart ratpoison:
+
+@example
+: bind R restart
+@end example
+
+If no command is specified then bind works exactly like @command{unbind},
+unbinding the key.
+@end deffn
+
+@deffn Command unbind @var{key}
+Unbind a keystroke.
+@end deffn
+
+@deffn Command definekey @var{kmap} @var{key} @var{command}
+@command{definekey} works exactly like @command{bind} and
+@command{unbind} except that it can bind keys on any key map (not just
+@samp{root}).
+@end deffn
+
+@deffn Command undefinekey @var{kmap} @var{key}
+Like @command{unbind} except that you pass it a key map in @var{kmap}.
+@end deffn
+
+@deffn Command readkey @var{kmap}
+Read a key from the keyboard and execute the command associated with
+it in the keymap, @var{kmap}.
+@end deffn
+
+@deffn Command link @var{key}
+Call the command that @var{key} is bound to. For instance
+@command{link C-t} would call the command @command{other} and switch
+to the last window.
+@end deffn
+
+@node Default Key Bindings, , Key Maps, Keystrokes
+@section Default Key Bindings
+
ratpoison is a very simple window manager. Each window is maximized and
has no border decorations. The default keystrokes are listed in this
chapter. Not all commands are accessible by default by keys. A full list
@@ -459,16 +987,23 @@ Indicate which frame is the current frame.
@end table
-@node Commands, Input, Keystrokes, Top
-@chapter Commands
+@node Hooks, The Status Bar, Keystrokes, Top
+@chapter Hooks
-ratpoison can be controlled with commands (so called colon-commands).
-The summary of available commands is listed below:
+One of the goals of ratpoison is to allow users to create exciting
+customization to fit their specific needs. Hooks allow a user to latch
+scripts onto certain events.
-@deffn Command abort
-This is a pretty useless command. By default, it is bound to
-@kbd{C-t g}, and its purpose is to abort other commands.
-@end deffn
+Each hook contains a list of commands to be executed when the
+appropriate event occurs in ratpoison. For example, if you want to warp
+the rat to corner of the screen everytime you press a top level bound
+key, you could add this to you .ratpoisonrc file:
+
+@example
+addhook key banish
+@end example
+
+That should keep the rat out of your way.
@deffn Command addhook @var{hook} @var{command}
Add a @var{command} to @var{hook}. When the hook is run, @var{command}
@@ -495,526 +1030,216 @@ Run when ratpoison restarts.
@end deffn
-@deffn Command alias @var{name} @var{command}
-An allows you to name a ratpoison command something else. For
-instance, if you frequently open emacs you may want to make an alias
-called @samp{emacs} that loads emacs. You would do it like this:
-
-@example
-: alias emacs exec emacs
-@end example
-
-An alias is treated exactly like a colon command in that you can call
-it from the colon prompt, bind it to a key, and call it
-non-interactively with @command{ratpoison -c}.
-@end deffn
-
-@deffn Command banish
-Banish the mouse to the lower right corner of the screen.
-@end deffn
-
-@deffn Command bind @var{Key} @var{command}
-Bind a key to a ratpoison command. This command takes two arguments: the
-key to bind and the command to run. For example, to bind @kbd{C-t R} to
-restart ratpoison:
-
-@example
-: bind R restart
-@end example
-
-If no command is specified then bind works exactly like @command{unbind},
-unbinding the key.
+@deffn Command remhook @var{hook} @var{command}
+Remove @var{command} from the hook. See @command{addhook} for a list
+of available hooks.
@end deffn
-@deffn Command chdir
-Change the current directory for ratpoison.
-@end deffn
-@deffn Command clrunmanaged
-Clear the unmanaged window list. See @command{unmanage} for an
-explanation of the unmanaged window list.
-@end deffn
+@node The Status Bar, Using Other Window Managers, Hooks, Top
+@chapter The Status Bar
-@deffn Command colon @var{command}
-Run a ratpoison command.
-@end deffn
+ratpoison presents status and output through the status bar. By default
+it is located in the top right corner of the screen.
-@deffn Command curframe
-Indicate which frame is the current frame.
-@end deffn
+This chapter presents commands for manipulating the status bar.
-@deffn Command defbarborder @var{n}
-Set the border width for the bar window.
-@end deffn
+Since it is the only visible evidence that ratpoison is running (as
+opposed to the invisible evidence including the lack of title bars and
+your favorite desktop background) there are also copious visual
+customizations available for those rainy days.
-@deffn Command defbargravity @var{g}
-Set the default alignment for the message bar. See the @command{gravity} command.
+@deffn Command msgwait @var{n}
+Set the bar's timeout in seconds.
When called non-interactively with no arguments, the current setting is
returned.
@end deffn
-@deffn Command defbarpadding @var{x} @var{y}
-Set the horizontal and vertical padding inside the bar.
-
-When called non-interactively with no arguments, the current setting is
-returned.
+@deffn Command lastmsg
+Display the last message.
@end deffn
-@deffn Command defbgcolor @var{color}
-Set the background color for all text ratpoison displays. @var{color}
-is any valid X11 color.
+@deffn Command echo @var{text}
+Display @var{text} as a message.
@end deffn
-@deffn Command defborder @var{n}
-Set the border width for all windows.
+@deffn Command definputwidth @var{n}
+Set the width of the input window.
When called non-interactively with no arguments, the current setting is
returned.
@end deffn
-@deffn Command deffgcolor @var{color}
-Set the foreground color for all text ratpoison displays. @var{color}
-is any valid X11 color.
-@end deffn
-
@deffn Command deffont @var{font}
Set the font. @var{font} is a font string like @samp{9x15bold}.
@end deffn
-@deffn Command definputwidth @var{n}
-Set the width of the input window.
-
-When called non-interactively with no arguments, the current setting is
-returned.
+@deffn Command deffgcolor @var{color}
+Set the foreground color for all text ratpoison displays. @var{color}
+is any valid X11 color.
@end deffn
-@deffn Command defmaxsizegravity @var{g}
-Set the default alignment for windows with maxsize hints. See the
-@command{gravity} command.
-
-When called non-interactively with no arguments, the current setting is
-returned.
+@deffn Command defbgcolor @var{color}
+Set the background color for all text ratpoison displays. @var{color}
+is any valid X11 color.
@end deffn
-@deffn Command defpadding @var{left} @var{top} @var{right} @var{bottom}
-Set the padding around the edge of the screen.
+@deffn Command defbarpadding @var{x} @var{y}
+Set the horizontal and vertical padding inside the bar.
When called non-interactively with no arguments, the current setting is
returned.
@end deffn
-@deffn Command defresizeunit @var{pixels}
-Set the number of pixels a frame will grow or shrink by when being
-dynamically resized.
-@end deffn
-
-@deffn Command deftransgravity @var{g}
-Set the default alignment for transient windows. See the
-@command{gravity} command.
+@deffn Command defbargravity @var{g}
+Set the default alignment for the message bar. See the @command{gravity} command.
When called non-interactively with no arguments, the current setting is
returned.
@end deffn
-@deffn Command defwaitcursor @var{n}
-Set whether the rat cursor should change into a square when waiting
-for a key. A non-zero number means change the cursor. Zero means don't
-change the cursor.
-When called non-interactively with no arguments, the current setting is
-returned.
+@deffn Command defbarborder @var{n}
+Set the border width for the bar window.
@end deffn
-@deffn Command defwinfmt @var{fmt}
-Set the default window format for the @command{windows} command. By
-default it is @samp{%n%s%t}. The following is a list of valid format
-characters:
-@table @samp
-@item %n
-The window number
-@item %s
-Window status (current window, last window, etc)
-@item %t
-Window Name
-@item %a
-Application Name
-@item %c
-Resource Class
-@item %i
-X11 Window ID
-@item %l
-A unique number based on when the window was last accessed. The higher
-the number, the more recently it was accessed.
-@end table
-
-When called non-interactively with no arguments, the current setting is
-returned.
-@end deffn
+@node Using Other Window Managers, Other Commands, The Status Bar, Top
+@chapter Using Other Window Managers
-@deffn Command defwingravity @var{g}
-Set the default gravity for normal windows. See the
-@command{gravity} command.
+There are times when a program has been so badly written that it is
+virtually impossible to use under ratpoison. Some authors have tailored
+their programs to certain window management paradigms so aggressively
+that very little can be done. Ratpoison has two commands to help you
+through these difficult times: @command{tmpwm} and @command{newwm}.
-When called non-interactively with no arguments, the current setting is
-returned.
-@end deffn
+These commands should be used sparingly. They were created to allow
+users to understand how a poorly designed program is intended to
+function so they can build a replacement or patch an existing
+alternative's missing functionality.
-@deffn Command defwinliststyle @var{setting}
-The window list can be displayed in a row or a column. @var{setting}
-can be @samp{row} or @samp{column}.
-@end deffn
+According to independant studies, @command{tmpwm} has been used almost
+exclusively to verify it's correct operation -- like a vintage sports
+care: always kept in prime condition and never used.
-@deffn Command defwinname @var{name}
-There are three resources ratpoison can get a window's name from: the
-WMNAME hint, the res_name from the WMCLASS hint, or the res_class from
-the WMCLASS hint. @var{name} can be @samp{title} which is what most
-window managers put in the title bar, @samp{name} which is the
-res_name, or @samp{class} which is the res_class.
+@command{tmpwm} and @command{newwm} are provided for boasting and
+completeness.
-When called non-interactively with no arguments, the current setting is
-returned.
+@deffn Command tmpwm @var{WM}
+Gives control over to another window manager and regains control once
+it has terminated. @var{WM} is the path to the new window
+manager. This command is useful when you want to temporarily take a
+look at another window manager, or program under a different window
+manager, but you want to come back to ratpoison when you've finished
+your investigation.
@end deffn
-@deffn Command delete
-This deletes the current window. You can access it with the @kbd{C-t k}
-keystroke.
+@deffn Command newwm @var{window-manager}
+This is a bad-bad command. It kills ratpoison and revives that
+ugly rodent! Yuck! Avoid!
@end deffn
-@deffn Command newkmap @var{kmap}
-Delete the keymap, @var{kmap}.
+@node Other Commands, Input, Using Other Window Managers, Top
+@chapter Other Commands
-@end deffn
+The following is a list of commands that don't fit in any existing
+chapters.
-@deffn Command echo @var{text}
-Display @var{text} as a message.
+@deffn Command abort
+This is a pretty useless command. By default, it is bound to @kbd{C-t
+g} and its purpose is to abort the current chain of keystrokes (just
+like @kbd{C-g} in @samp{Emacs}).
@end deffn
-@deffn Command escape @var{key}
-Set the prefix to @var{key}. For example @samp{escape C-b} sets the
-prefix key to @key{C-b}.
-@end deffn
+@deffn Command alias @var{name} @var{command}
+Allows you to name a ratpoison command something else. For
+instance, if you frequently open emacs you may want to make an alias
+called @samp{emacs} that loads emacs. You would do it like this:
-@deffn Command exec @var{command}
-Execute a shell command. By default, @kbd{C-t !} does this.
-@end deffn
+@example
+: alias emacs exec emacs
+@end example
-@deffn Command fdump
-dump the current frame layout as text. When used non-interactively
-(from the command-line), ratpoison will print the frame layout. When
-used interactively, nothing happens.
+An alias is treated exactly like a colon command in that you can call
+it from the colon prompt, bind it to a key, and call it
+non-interactively with @command{ratpoison -c}.
@end deffn
-@deffn Command focus
-cycle through ratpoison's frames.
+@deffn Command banish
+Banish the mouse to the lower right corner of the screen.
@end deffn
-@deffn Command focusdown
-Move to the frame below the current frame.
+@deffn Command chdir
+Change the current directory for ratpoison.
@end deffn
-@deffn Command focuslast
-Switch to the last focused frame.
+@deffn Command colon @var{command}
+Run a ratpoison command.
@end deffn
-@deffn Command focusleft
-Move to the frame left of the current frame.
-@end deffn
+@deffn Command defpadding @var{left} @var{top} @var{right} @var{bottom}
+Set the padding around the edge of the screen.
-@deffn Command focusright
-Move to the frame right of the current frame.
+When called non-interactively with no arguments, the current setting is
+returned.
@end deffn
-@deffn Command focusup
-Move to the frame above the current frame.
-@end deffn
+@deffn Command defwaitcursor @var{n}
+Set whether the rat cursor should change into a square when waiting
+for a key. A non-zero number means change the cursor. Zero means don't
+change the cursor.
-@deffn Command frestore @var{frames}
-Restore the frame layout based on the list of frames
-@var{frames}. @var{frames} should be the text that was printed after
-calling @code{fdump}.
+When called non-interactively with no arguments, the current setting is
+returned.
@end deffn
-@deffn Command fselect @var{n}
-Select a frame by number. If an argument is passed to it then attempt
-to select the frame whose number is @var{n}. If not, ratpoison will
-print a number at the top left corner of each frame and wait for the
-user to type the number they wish to select. Currently there is no way
-to select a frame whose number is greater than 9 unless the number is
-passed as an argument.
+@deffn Command escape @var{key}
+Set the prefix to @var{key}. For example @samp{escape C-b} sets the
+prefix key to @key{C-b}.
@end deffn
-@deffn Command gdelete @var{group}
-Delete a group. @var{group} is optional. If it is not specified
-ratpoison will attempt to delete the current group. Only empty groups
-can be deleted. To empty a group see @command{gmerge}.
+@deffn Command exec @var{command}
+Execute a shell command. By default, @kbd{C-t !} does this.
@end deffn
@deffn Command getenv @var{env}
Display the value of the environment variable, @var{env}.
@end deffn
-@deffn Command gmerge @var{group}
-Merge @var{group} with the current group. All windows in @var{group}
-will be moved to the current group. @var{group} is not deleted.
-@end deffn
-
-@deffn Command gmove @var{group}
-Move the current window to @var{group}.
-@end deffn
-
-@deffn Command gnew @var{name}
-Create a new group with the name @var{name}. @var{name} is
-optional. This new group becomes the new group.
-@end deffn
-
-@deffn Command gnewbg @var{name}
-This is the same as @command{gnew} except that the current group does
-not change.
-@end deffn
-
-@deffn Command gnext
-Go to the next group in the list.
-@end deffn
-
-@deffn Command gprev
-Go to the previous group in the list.
-@end deffn
-
-@deffn Command gravity @var{g}
-Change the gravity of the current window. A normal window will default
-to the top-left corner of the screen, but it can also be placed at the
-bottom-right corner of the screen. Valid values for @var{g} are the 8
-directions @samp{northwest}, @samp{north}, @samp{northeast},
-@samp{east}, @samp{southeast}, @samp{south}, @samp{southwest} and
-@samp{west}, clockwise from the top left corner. @samp{center} will
-center the window in the frame. @var{g} and can be abbreviated to the
-standard compass 1 and 2 letter abbreviations (i.e. @samp{nw},
-@samp{s}, etc).
-
-When called non-interactively with no arguments, the current setting is
-returned.
-@end deffn
-
-@deffn Command groups
-Display a list of groups with a similar format to @command{windows}.
-@end deffn
-
-@deffn Command gselect @var{group}
-Select a particular group by name or number. If @var{group} is not
-provided, ratpoison will interactively prompt for the group.
-@end deffn
-
@deffn Command help
Display a help screen that lists all bound keystrokes.
@end deffn
-@deffn Command info
-Display information about the current window.
-@end deffn
-
-@deffn Command kill
-This destroys the current window. Normally you should only need to
-use @command{delete}, but just in case you need to rip the heart out of a
-misbehaving window this command should do the trick. Also available as
-@kbd{C-t K}.
-@end deffn
-
-@deffn Command lastmsg
-Display the last message.
-@end deffn
-
@deffn Command license
Display ratpoison's license. By default, this is bound to @kbd{C-t V}.
@end deffn
-@deffn Command link @var{key}
-Call the command that @var{key} is bound to. For instance
-@command{link C-t} would call the command @command{other} and switch
-to the last window.
-@end deffn
-
@deffn Command meta
Send a @kbd{C-t} to the current window.
@end deffn
-@deffn Command msgwait @var{n}
-Set the bar's timeout in seconds.
-
-When called non-interactively with no arguments, the current setting is
-returned.
-@end deffn
-
-@deffn Command newkmap @var{kmap}
-Create a new keymap named @var{kmap}.
-
-@end deffn
-
-@deffn Command newwm @var{window-manager}
-This is a bad-bad command. It kills ratpoison and revives that
-ugly rodent! Yuck! Avoid!
-@end deffn
-
-@deffn Command next
-This jumps you to the next window in the window list. This one is
-bound to three keystrokes, namely @kbd{C-t n}, @kbd{C-t space},
-and @kbd{C-t enter}.
-@end deffn
-
-@deffn Command nextscreen
-This jumps you to the next X11 screen. @command{nextscreen} is
-used for dual-head displays and multiple monitor setups.
-@end deffn
-
-@deffn Command number @var{n} @var{target}
-Set a window's number to @var{n}. If another window occupies the
-requested number already, then the windows' numbers are swapped.
-
-The second argument, @var{target}, is optional. It should be the
-number of the window whose number will be changed. If @var{target} is
-omitted ratpoison defaults to the current window.
-@end deffn
-
-@deffn Command only
-Kill all frames but the current one.
-@end deffn
-
-@deffn Command other
-This toggles between the current window and the last window. By
-default, this is bound to @kbd{C-t C-t}.
-@end deffn
-
-@deffn Command prev
-This jumps you to the previous window in the window list. By default,
-this is bound to @kbd{C-t p}.
-@end deffn
-
-@deffn Command prevscreen
-This jumps you to the previous X11 screen. @command{prevscreen} is
-used for dual-head displays and multiple monitor setups.
-@end deffn
-
@deffn Command quit
Quit ratpoison.
@end deffn
-@deffn Command readkey @var{kmap}
-Read a key from the keyboard and execute the command associated with
-it in the keymap, @var{kmap}.
-
-@end deffn
-
@deffn Command redisplay
-Redisplay the current window, just like @kbd{C-t l} would do.
-@end deffn
-
-@deffn Command remhook @var{hook} @var{command}
-Remove @var{command} from the hook. See @command{addhook} for a list
-of available hooks.
-@end deffn
-
-@deffn Command remove
-Kill the current frame. This is a no-op if there is only one frame.
-@end deffn
-
-@deffn Command resize @var{horizontal} @var{vertical}
-Resize the current frame by @var{horizontal} pixels horizontally, and
-@var{vertical} pixels vertically. If no arguments are given and the
-command is called interactively, ratpoison will let the user
-dynamically resize the frame using @kbd{C-p} to shrink vertically,
-@kbd{C-n} to grow vertically, @kbd{C-b} to shrink horizontally,
-@kbd{C-f} to grow horizontally, and @kbd{s} to shrink the frame to the
-size of the window (See the @command{shrink} command). When you have
-resized the frame to your liking, press @kbd{Return} to finish.
+Redisplay the current window. This is often used to fix xterms that
+didn't catch ratpoison's initial maximize event.
@end deffn
@deffn Command restart
Restart ratpoison.
@end deffn
-@deffn Command rudeness @var{n}
-The rudeness command lets you decide what windows pop-up automatically
-and when. This is often useful for those deep hack sessions when you
-absolutely can't be disturbed.
-
-There are two kinds of windows: normal windows (like an xterm) and
-transient windows (generally pop-up dialog boxes). When a client
-program wants to display a new window it makes a requests to
-ratpoison. ratpoison then decides whether to grant the request and
-display the window or ignore it. A client program can also request
-that one of its windows be raised. You can customize ratpoison to
-either honour these requests (the default operation) or ignore them.
-
-@var{n} is a number from 0 to 15. Each of the four bits determine
-which requests ratpoison grants.
-
-@table @asis
-@item Bit 0
-Tells ratpoison to grant raise requests on transient windows
-
-@item Bit 1
-Tells ratpoison to grant raise requests on normal windows
-
-@item Bit 2
-Tells ratpoison to grant display requests on new transient windows
-
-@item Bit 3
-Tells ratpoison to grant display requests on new normal windows
-@end table
-
-For example, if you wanted only wanted to grant transient windows
-raise requests and display requests you would type @samp{rudeness
-5}. If a request is not granted ratpoison will tell you about the
-request with a message like @samp{Raise request from window 1
-(emacs)}.
-
-When called non-interactively with no arguments, the current setting is
-returned.
-@end deffn
-
-@deffn Command select @var{n}
-This jumps you to window @var{n} where @var{n} is the window number as
-shown in the Program Bar. You can do the same trick with
-@command{C-@var{n}} too. To select no window, blanking the current
-frame, type @samp{select -}.
-@end deffn
-
-@deffn Command select @var{window-name}
-Go to a window by name. A shortcut is @kbd{C-t '}.
-@end deffn
-
@deffn Command setenv @var{env} @var{value}
Set the environment variable @var{env} to @var{value}
@end deffn
-@deffn Command shrink
-If a window has resize increment hints, such as xterms, the window may
-not be able to take up the whole frame. In this case, use this command
-to suck the frame up to the to window, reclaiming any wasted space.
-@end deffn
-
@deffn Command source @var{file}
Read a text file containing ratpoison commands.
@end deffn
-@deffn Command split @var{n}
-@deffnx Command vsplit @var{n}
-Split the current frame vertically in two. The last accessed window
-not occupying a frame will be the second window.
-
-@var{n} is either a fraction of the form @code{x/y} or a number. If it
-is a fraction then the current frame is resized to that fraction of
-its original size and the new frame takes up the remaining space. For
-instance, @code{split 1/4} will split the current frame to a quarter
-of its original size and the new frame will then be 3/4 of the size of
-the original frame.
-
-If it is a pixel, the original frame is resized to that many
-pixels. If @var{n} has a minus sign before it, then the new frame will
-shrink by that many pixels.
-@end deffn
-
@deffn Command startup_message @var{state}
Turn on or off the startup_message. This is most useful in your
.ratpoisonrc file. @var{state} can be @code{on} or @code{off}.
@@ -1023,43 +1248,14 @@ When called non-interactively with no arguments, the current setting is
returned.
@end deffn
-@deffn Command tmpwm @var{WM}
-Gives control over to another window manager and regains control once
-it has terminated. @var{WM} is the path to the new window
-manager. This command is useful when you want to temporarily take a
-look at another window manager, or program under a different window
-manager, but you want to come back to ratpoison when you've finished
-your investigation.
-@end deffn
-
@deffn Command time
-Show current time. Disappears after 5 seconds, like all other info bars.
-In the default setup, the @kbd{C-t a} keystroke is bound to this command.
-@end deffn
-
-@deffn Command title @var{title}
-Rename the currently active window. This name will remain for the
-duration of the window's life, unless you change it again. By default,
-the @kbd{C-t A} keystroke is bound to this command.
+Show current time in the status bar.
@end deffn
@deffn Command unalias @var{name}
Remove @var{name} from the list of defined aliases.
@end deffn
-@deffn Command unbind @var{key}
-Unbind a keystroke.
-@end deffn
-
-@deffn Command unmanage @var{text}
-Add @var{text} to the unmanaged window list. Any window whose name
-matches any of the strings in the unmanaged window list will not be
-handled in any way by ratpoison. This only applies to new windows (not
-windows already managed by ratpoison).
-
-When called non-interactively with no arguments, the list is returned.
-@end deffn
-
@deffn Command unsetenv @var{env}
Clear the value of the environment variable, @var{env}.
@end deffn
@@ -1073,22 +1269,6 @@ message saying command was executed.
Print ratpoison version. By default, this is bound to @kbd{C-t v}.
@end deffn
-@deffn Command hsplit @var{n}
-Split the current frame horizontally in two. The last accessed window
-not occupying a frame will be the second window.
-
-@var{n} is either a fraction of the form @code{x/y} or a number. If it
-is a fraction then the current frame is resized to that fraction of
-its original size and the new frame takes up the remaining space. For
-instance, @code{split 1/4} will split the current frame to a quarter
-of its original size and the new frame will then be 3/4 of the size of
-the original frame.
-
-If it is a pixel, the original frame is resized to that many
-pixels. If @var{n} has a minus sign before it, then the new frame will
-shrink by that many pixels.
-@end deffn
-
@deffn Command warp @var{state}
Toggle rat warping. By default ratpoison saves the position of the
rat when leaving a window and when the user returns to the window the
@@ -1096,33 +1276,7 @@ rat's position is restored. This can be counter-intuitive, so you can
toggle it with this command. @var{state} can be @code{on} or @code{off}.
@end deffn
-@deffn Command windows @var{fmt}
-This displays the Program Bar which displays the windows you currently
-have running. The number before each window name is used to jump to
-that window. You can do this by typing @kbd{C-t @var{n}} where @var{n}
-is the number of the window. Note that only windows with numbers from
-0 to 9 can be referenced using this keystroke. To reach windows with
-numbers greater than 9, use @kbd{C-t '} and type the number at the
-prompt.
-
-After 5 seconds the Program Bar disappears.
-
-This command is bound to @kbd{C-t w} by default.
-
-When invoked from the command-line like this,
-
-@example
-$ ratpoison -c windows
-@end example
-
-Instead of a message bar, you will get a list of the windows printed
-to stdout. This allows you to write more advanced scripts than simple
-keyboard macros. This is where @var{fmt} comes into play. If
-@command{windows} is given an arg it treats it as the format string as
-described in @command{defwinfmt}.
-@end deffn
-
-@node Input, Command Line Arguments, Commands, Top
+@node Input, Command Line Arguments, Other Commands, Top
@chapter Input
At various times ratpoison will prompt you for input. Ratpoison sports
a fully featured line editor. The following table lists the keystrokes