ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.39
Committed: Mon Feb 6 05:55:33 2006 UTC (18 years, 4 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.38: +18 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.28 rxvtperl - rxvt-unicode's embedded perl interpreter
3 root 1.1
4     SYNOPSIS
5 root 1.3 # create a file grab_test in $HOME:
6 root 1.1
7     sub on_sel_grab {
8     warn "you selected ", $_[0]->selection;
9     ()
10     }
11    
12 root 1.28 # start a rxvt using it:
13 root 1.3
14 root 1.28 rxvt --perl-lib $HOME -pe grab_test
15 root 1.1
16     DESCRIPTION
17 root 1.13 Everytime a terminal object gets created, extension scripts specified
18     via the "perl" resource are loaded and associated with it.
19 root 1.3
20     Scripts are compiled in a 'use strict' and 'use utf8' environment, and
21     thus must be encoded as UTF-8.
22 root 1.1
23 root 1.28 Each script will only ever be loaded once, even in rxvtd, where scripts
24 root 1.5 will be shared (but not enabled) for all terminals.
25 root 1.1
26 root 1.18 PREPACKAGED EXTENSIONS
27     This section describes the extensions delivered with this release. You
28 root 1.28 can find them in /opt/rxvt/lib/urxvt/perl/.
29 root 1.4
30     You can activate them like this:
31    
32 root 1.28 rxvt -pe <extensionname>
33 root 1.4
34 root 1.32 Or by adding them to the resource for extensions loaded by default:
35    
36     URxvt.perl-ext-common: default,automove-background,selection-autotransform
37    
38 root 1.14 selection (enabled by default)
39 root 1.18 (More) intelligent selection. This extension tries to be more
40 root 1.23 intelligent when the user extends selections (double-click and
41     further clicks). Right now, it tries to select words, urls and
42     complete shell-quoted arguments, which is very convenient, too, if
43     your ls supports "--quoting-style=shell".
44    
45     A double-click usually selects the word under the cursor, further
46     clicks will enlarge the selection.
47 root 1.7
48 root 1.24 The selection works by trying to match a number of regexes and
49     displaying them in increasing order of length. You can add your own
50     regexes by specifying resources of the form:
51    
52     URxvt.selection.pattern-0: perl-regex
53     URxvt.selection.pattern-1: perl-regex
54     ...
55    
56     The index number (0, 1...) must not have any holes, and each regex
57     must contain at least one pair of capturing parentheses, which will
58     be used for the match. For example, the followign adds a regex that
59     matches everything between two vertical bars:
60    
61     URxvt.selection.pattern-0: \\|([^|]+)\\|
62    
63 root 1.36 Another example: Programs I use often output "absolute path: " at
64     the beginning of a line when they process multiple files. The
65     following pattern matches the filename (note, there is a single
66     space at the very end):
67    
68     URxvt.selection.pattern-0: ^(/[^:]+):\
69    
70 root 1.24 You can look at the source of the selection extension to see more
71     interesting uses, such as parsing a line from beginning to end.
72    
73 root 1.29 This extension also offers following bindable keyboard commands:
74 root 1.4
75     rot13
76     Rot-13 the selection when activated. Used via keyboard trigger:
77    
78     URxvt.keysym.C-M-r: perl:selection:rot13
79    
80 root 1.14 option-popup (enabled by default)
81 root 1.15 Binds a popup menu to Ctrl-Button2 that lets you toggle (some)
82 root 1.14 options at runtime.
83    
84 root 1.15 selection-popup (enabled by default)
85     Binds a popup menu to Ctrl-Button3 that lets you convert the
86 root 1.18 selection text into various other formats/action (such as uri
87 root 1.33 unescaping, perl evaluation, web-browser starting etc.), depending
88     on content.
89 root 1.15
90 root 1.31 Other extensions can extend this popup menu by pushing a code
91     reference onto "@{ $term-"{selection_popup_hook} }>, that is called
92     whenever the popup is displayed.
93    
94     It's sole argument is the popup menu, which can be modified. The
95     selection is in $_, which can be used to decide wether to add
96     something or not. It should either return nothing or a string and a
97     code reference. The string will be used as button text and the code
98     reference will be called when the button gets activated and should
99     transform $_.
100    
101     The following will add an entry "a to b" that transforms all "a"s in
102     the selection to "b"s, but only if the selection currently contains
103     any "a"s:
104    
105     push @{ $self->{term}{selection_popup_hook} }, sub {
106     /a/ ? ("a to be" => sub { s/a/b/g }
107     : ()
108     };
109    
110 root 1.17 searchable-scrollback<hotkey> (enabled by default)
111     Adds regex search functionality to the scrollback buffer, triggered
112 root 1.23 by a hotkey (default: "M-s"). While in search mode, normal terminal
113     input/output is suspended and a regex is displayed at the bottom of
114     the screen.
115    
116     Inputting characters appends them to the regex and continues
117     incremental search. "BackSpace" removes a character from the regex,
118     "Up" and "Down" search upwards/downwards in the scrollback buffer,
119     "End" jumps to the bottom. "Escape" leaves search mode and returns
120     to the point where search was started, while "Enter" or "Return"
121     stay at the current position and additionally stores the first match
122     in the current line into the primary selection.
123 root 1.17
124 root 1.34 readline (enabled by default)
125     A support package that tries to make editing with readline easier.
126     At the moment, it reacts to clicking with the left mouse button by
127     trying to move the text cursor to this position. It does so by
128     generating as many cursor-left or cursor-right keypresses as
129     required (the this only works for programs that correctly support
130     wide characters).
131    
132     To avoid too many false positives, this is only done when:
133    
134 root 1.35 - the tty is in ICANON state.
135     - the text cursor is visible.
136     - the primary screen is currently being displayed.
137 root 1.34 - the mouse is on the same (multi-row-) line as the text cursor.
138    
139     The normal selection mechanism isn't disabled, so quick successive
140     clicks might interfere with selection creation in harmless ways.
141    
142 root 1.24 selection-autotransform
143     This selection allows you to do automatic transforms on a selection
144     whenever a selection is made.
145    
146     It works by specifying perl snippets (most useful is a single "s///"
147     operator) that modify $_ as resources:
148    
149     URxvt.selection-autotransform.0: transform
150     URxvt.selection-autotransform.1: transform
151     ...
152    
153     For example, the following will transform selections of the form
154     "filename:number", often seen in compiler messages, into "vi
155     +$filename $word":
156    
157 root 1.27 URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/vi +$2 \\Q$1\\E\\x0d/
158 root 1.24
159     And this example matches the same,but replaces it with vi-commands
160     you can paste directly into your (vi :) editor:
161    
162 root 1.31 URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/
163 root 1.6
164 root 1.25 Of course, this can be modified to suit your needs and your editor
165     :)
166    
167 root 1.26 To expand the example above to typical perl error messages ("XXX at
168     FILENAME line YYY."), you need a slightly more elaborate solution:
169    
170 root 1.31 URxvt.selection.pattern-0: ( at .*? line \\d+[,.])
171     URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)[,.]$/:e \\Q$1\E\\x0d:$2\\x0d/
172 root 1.26
173     The first line tells the selection code to treat the unchanging part
174     of every error message as a selection pattern, and the second line
175     transforms the message into vi commands to load the file.
176    
177 root 1.32 tabbed
178     This transforms the terminal into a tabbar with additional
179     terminals, that is, it implements what is commonly refered to as
180     "tabbed terminal". The topmost line displays a "[NEW]" button,
181     which, when clicked, will add a new tab, followed by one button per
182     tab.
183    
184     Clicking a button will activate that tab. Pressing Shift-Left and
185 root 1.33 Shift-Right will switch to the tab left or right of the current one,
186     while Shift-Down creates a new tab.
187 root 1.32
188 root 1.39 The tabbar itself can be configured similarly to a normal terminal,
189     but with a resource class of "URxvt.tabbed". In addition, it
190     supports the following four resources (shown with defaults):
191    
192     URxvt.tabbed.tabbar-fg: <colour-index, default 3>
193     URxvt.tabbed.tabbar-bg: <colour-index, default 0>
194     URxvt.tabbed.tab-fg: <colour-index, default 0>
195     URxvt.tabbed.tab-bg: <colour-index, default 1>
196    
197     See *COLOR AND GRAPHICS* in the rxvt(1) manpage for valid indices.
198    
199 root 1.12 mark-urls
200 root 1.22 Uses per-line display filtering ("on_line_update") to underline urls
201 root 1.23 and make them clickable. When middle-clicked, the program specified
202     in the resource "urlLauncher" (default "x-www-browser") will be
203     started with the URL as first argument.
204 root 1.12
205 root 1.36 xim-onthespot
206     This (experimental) perl extension implements OnTheSpot editing. It
207     does not work perfectly, and some input methods don't seem to work
208     well with OnTheSpot editing in general, but it seems to work at
209     leats for SCIM and kinput2.
210    
211     You enable it by specifying this extension and a preedit style of
212     "OnTheSpot", i.e.:
213    
214     rxvt -pt OnTheSpot -pe xim-onthespot
215    
216 root 1.31 automove-background
217     This is basically a one-line extension that dynamically changes the
218     background pixmap offset to the window position, in effect creating
219     the same effect as pseudo transparency with a custom pixmap. No
220     scaling is supported in this mode. Exmaple:
221    
222     rxvt -pixmap background.xpm -pe automove-background
223    
224 root 1.12 block-graphics-to-ascii
225     A not very useful example of filtering all text output to the
226     terminal, by replacing all line-drawing characters (U+2500 ..
227     U+259F) by a similar-looking ascii character.
228    
229 root 1.24 digital-clock
230     Displays a digital clock using the built-in overlay.
231    
232 root 1.37 remote-clipboard
233     Somewhat of a misnomer, this extension adds two menu entries to the
234     selection popup that allows one ti run external commands to store
235     the selection somewhere and fetch it again.
236    
237     We use it to implement a "distributed selection mechanism", which
238     just means that one command uploads the file to a remote server, and
239     another reads it.
240    
241     The commands can be set using the "URxvt.remote-selection.store" and
242     "URxvt.remote-selection.fetch" resources. The first should read the
243     selection to store from STDIN (always in UTF-8), the second should
244     provide the selection data on STDOUT (also in UTF-8).
245    
246     The defaults (which are likely useless to you) use rsh and cat:
247    
248     URxvt.remote-selection.store: rsh ruth 'cat >/tmp/distributed-selection'
249     URxvt.remote-selection.fetch: rsh ruth 'cat /tmp/distributed-selection'
250 root 1.4
251 root 1.30 selection-pastebin
252     This is a little rarely useful extension that Uploads the selection
253     as textfile to a remote site (or does other things). (The
254     implementation is not currently secure for use in a multiuser
255     environment as it writes to /tmp directly.).
256    
257     It listens to the "selection-pastebin:remote-pastebin" keyboard
258     command, i.e.
259    
260     URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin
261    
262     Pressing this combination runs a command with "%" replaced by the
263     name of the textfile. This command can be set via a resource:
264    
265     URxvt.selection-pastebin.cmd: rsync -apP % ruth:/var/www/www.ta-sa.org/files/txt/.
266    
267     And the default is likely not useful to anybody but the few people
268     around here :)
269    
270     The name of the textfile is the hex encoded md5 sum of the
271     selection, so the same content should lead to the same filename.
272    
273     After a successful upload the selection will be replaced by the text
274     given in the "selection-pastebin-url" resource (again, the % is the
275     placeholder for the filename):
276    
277     URxvt.selection-pastebin.url: http://www.ta-sa.org/files/txt/%
278    
279 root 1.37 example-refresh-hooks
280     Displays a very simple digital clock in the upper right corner of
281     the window. Illustrates overwriting the refresh callbacks to create
282     your own overlays or changes.
283    
284 root 1.18 API DOCUMENTATION
285 root 1.1 General API Considerations
286     All objects (such as terminals, time watchers etc.) are typical
287     reference-to-hash objects. The hash can be used to store anything you
288     like. All members starting with an underscore (such as "_ptr" or
289 root 1.7 "_hook") are reserved for internal uses and MUST NOT be accessed or
290 root 1.1 modified).
291    
292     When objects are destroyed on the C++ side, the perl object hashes are
293     emptied, so its best to store related objects such as time watchers and
294     the like inside the terminal object so they get destroyed as soon as the
295     terminal is destroyed.
296    
297 root 1.12 Argument names also often indicate the type of a parameter. Here are
298     some hints on what they mean:
299    
300     $text
301     Rxvt-unicodes special way of encoding text, where one "unicode"
302 root 1.21 character always represents one screen cell. See ROW_t for a
303 root 1.12 discussion of this format.
304    
305     $string
306     A perl text string, with an emphasis on *text*. It can store all
307     unicode characters and is to be distinguished with text encoded in a
308     specific encoding (often locale-specific) and binary data.
309    
310     $octets
311     Either binary data or - more common - a text string encoded in a
312     locale-specific way.
313    
314 root 1.17 Extension Objects
315     Very perl extension is a perl class. A separate perl object is created
316     for each terminal and each extension and passed as the first parameter
317     to hooks. So extensions can use their $self object without having to
318     think about other extensions, with the exception of methods and members
319     that begin with an underscore character "_": these are reserved for
320     internal use.
321    
322     Although it isn't a "urxvt::term" object, you can call all methods of
323     the "urxvt::term" class on this object.
324    
325     It has the following methods and data members:
326    
327     $urxvt_term = $self->{term}
328     Returns the "urxvt::term" object associated with this instance of
329     the extension. This member *must not* be changed in any way.
330    
331     $self->enable ($hook_name => $cb, [$hook_name => $cb..])
332     Dynamically enable the given hooks (named without the "on_" prefix)
333     for this extension, replacing any previous hook. This is useful when
334     you want to overwrite time-critical hooks only temporarily.
335    
336     $self->disable ($hook_name[, $hook_name..])
337     Dynamically disable the given hooks.
338    
339 root 1.1 Hooks
340 root 1.12 The following subroutines can be declared in extension files, and will
341     be called whenever the relevant event happens.
342 root 1.1
343 root 1.17 The first argument passed to them is an extension oject as described in
344     the in the "Extension Objects" section.
345 root 1.7
346 root 1.32 All of these hooks must return a boolean value. If any of the called
347     hooks returns true, then the event counts as being *consumed*, and the
348     relevant action might not be carried out by the C++ code.
349 root 1.1
350 root 1.17 *When in doubt, return a false value (preferably "()").*
351 root 1.1
352     on_init $term
353     Called after a new terminal object has been initialized, but before
354 root 1.12 windows are created or the command gets run. Most methods are unsafe
355     to call or deliver senseless data, as terminal size and other
356     characteristics have not yet been determined. You can safely query
357 root 1.32 and change resources and options, though. For many purposes the
358     "on_start" hook is a better place.
359    
360     on_start $term
361     Called at the very end of initialisation of a new terminal, just
362     before trying to map (display) the toplevel and returning to the
363     mainloop.
364    
365     on_destroy $term
366 root 1.36 Called whenever something tries to destroy terminal, when the
367     terminal is still fully functional (not for long, though).
368 root 1.1
369     on_reset $term
370     Called after the screen is "reset" for any reason, such as resizing
371     or control sequences. Here is where you can react on changes to
372     size-related variables.
373    
374 root 1.31 on_child_start $term, $pid
375     Called just after the child process has been "fork"ed.
376    
377     on_child_exit $term, $status
378     Called just after the child process has exited. $status is the
379     status from "waitpid".
380    
381 root 1.1 on_sel_make $term, $eventtime
382     Called whenever a selection has been made by the user, but before
383     the selection text is copied, so changes to the beginning, end or
384     type of the selection will be honored.
385    
386     Returning a true value aborts selection making by urxvt, in which
387     case you have to make a selection yourself by calling
388     "$term->selection_grab".
389    
390     on_sel_grab $term, $eventtime
391     Called whenever a selection has been copied, but before the
392     selection is requested from the server. The selection text can be
393     queried and changed by calling "$term->selection".
394    
395     Returning a true value aborts selection grabbing. It will still be
396     hilighted.
397    
398 root 1.7 on_sel_extend $term
399     Called whenever the user tries to extend the selection (e.g. with a
400     double click) and is either supposed to return false (normal
401     operation), or should extend the selection itelf and return true to
402 root 1.23 suppress the built-in processing. This can happen multiple times, as
403     long as the callback returns true, it will be called on every
404     further click by the user and is supposed to enlarge the selection
405     more and more, if possible.
406 root 1.7
407     See the selection example extension.
408    
409 root 1.1 on_view_change $term, $offset
410     Called whenever the view offset changes, i..e the user or program
411     scrolls. Offset 0 means display the normal terminal, positive values
412     show this many lines of scrollback.
413    
414     on_scroll_back $term, $lines, $saved
415     Called whenever lines scroll out of the terminal area into the
416     scrollback buffer. $lines is the number of lines scrolled out and
417     may be larger than the scroll back buffer or the terminal.
418    
419     It is called before lines are scrolled out (so rows 0 .. min ($lines
420     - 1, $nrow - 1) represent the lines to be scrolled out). $saved is
421     the total number of lines that will be in the scrollback buffer.
422    
423 root 1.9 on_osc_seq $term, $string
424     Called whenever the ESC ] 777 ; string ST command sequence (OSC =
425     operating system command) is processed. Cursor position and other
426     state information is up-to-date when this happens. For
427     interoperability, the string should start with the extension name
428     and a colon, to distinguish it from commands for other extensions,
429     and this might be enforced in the future.
430    
431     Be careful not ever to trust (in a security sense) the data you
432     receive, as its source can not easily be controleld (e-mail content,
433     messages from other users on the same system etc.).
434    
435 root 1.12 on_add_lines $term, $string
436     Called whenever text is about to be output, with the text as
437     argument. You can filter/change and output the text yourself by
438     returning a true value and calling "$term->scr_add_lines" yourself.
439     Please note that this might be very slow, however, as your hook is
440     called for all text being output.
441    
442 root 1.17 on_tt_write $term, $octets
443     Called whenever some data is written to the tty/pty and can be used
444     to suppress or filter tty input.
445    
446 root 1.12 on_line_update $term, $row
447     Called whenever a line was updated or changed. Can be used to filter
448     screen output (e.g. underline urls or other useless stuff). Only
449     lines that are being shown will be filtered, and, due to performance
450     reasons, not always immediately.
451    
452     The row number is always the topmost row of the line if the line
453     spans multiple rows.
454    
455     Please note that, if you change the line, then the hook might get
456     called later with the already-modified line (e.g. if unrelated parts
457     change), so you cannot just toggle rendition bits, but only set
458     them.
459    
460 root 1.1 on_refresh_begin $term
461     Called just before the screen gets redrawn. Can be used for overlay
462     or similar effects by modify terminal contents in refresh_begin, and
463     restoring them in refresh_end. The built-in overlay and selection
464     display code is run after this hook, and takes precedence.
465    
466     on_refresh_end $term
467     Called just after the screen gets redrawn. See "on_refresh_begin".
468    
469 root 1.37 on_user_command $term, $string
470     Called whenever the a user-configured event is being activated (e.g.
471     via a "perl:string" action bound to a key, see description of the
472     keysym resource in the rxvt(1) manpage).
473    
474     The event is simply the action string. This interface is assumed to
475     change slightly in the future.
476 root 1.27
477     on_x_event $term, $event
478     Called on every X event received on the vt window (and possibly
479     other windows). Should only be used as a last resort. Most event
480     structure members are not passed.
481 root 1.3
482 root 1.13 on_focus_in $term
483     Called whenever the window gets the keyboard focus, before
484     rxvt-unicode does focus in processing.
485    
486     on_focus_out $term
487     Called wheneever the window loses keyboard focus, before
488     rxvt-unicode does focus out processing.
489    
490 root 1.31 on_configure_notify $term, $event
491 root 1.33 on_property_notify $term, $event
492 root 1.17 on_key_press $term, $event, $keysym, $octets
493     on_key_release $term, $event, $keysym
494 root 1.12 on_button_press $term, $event
495     on_button_release $term, $event
496     on_motion_notify $term, $event
497 root 1.13 on_map_notify $term, $event
498     on_unmap_notify $term, $event
499 root 1.12 Called whenever the corresponding X event is received for the
500     terminal If the hook returns true, then the even will be ignored by
501     rxvt-unicode.
502    
503     The event is a hash with most values as named by Xlib (see the
504     XEvent manpage), with the additional members "row" and "col", which
505 root 1.33 are the (real, not screen-based) row and column under the mouse
506     cursor.
507 root 1.12
508     "on_key_press" additionally receives the string rxvt-unicode would
509     output, if any, in locale-specific encoding.
510    
511     subwindow.
512    
513 root 1.32 on_client_message $term, $event
514     on_wm_protocols $term, $event
515     on_wm_delete_window $term, $event
516     Called when various types of ClientMessage events are received (all
517     with format=32, WM_PROTOCOLS or WM_PROTOCOLS:WM_DELETE_WINDOW).
518    
519 root 1.7 Variables in the "urxvt" Package
520 root 1.19 $urxvt::LIBDIR
521     The rxvt-unicode library directory, where, among other things, the
522     perl modules and scripts are stored.
523    
524     $urxvt::RESCLASS, $urxvt::RESCLASS
525     The resource class and name rxvt-unicode uses to look up X
526     resources.
527    
528     $urxvt::RXVTNAME
529     The basename of the installed binaries, usually "urxvt".
530    
531 root 1.7 $urxvt::TERM
532 root 1.12 The current terminal. This variable stores the current "urxvt::term"
533     object, whenever a callback/hook is executing.
534 root 1.7
535 root 1.32 @urxvt::TERM_INIT
536     All coderefs in this array will be called as methods of the next
537     newly created "urxvt::term" object (during the "on_init" phase). The
538     array gets cleared before the codereferences that were in it are
539     being executed, so coderefs can push themselves onto it again if
540     they so desire.
541    
542     This complements to the perl-eval commandline option, but gets
543     executed first.
544    
545     @urxvt::TERM_EXT
546     Works similar to @TERM_INIT, but contains perl package/class names,
547     which get registered as normal extensions after calling the hooks in
548     @TERM_INIT but before other extensions. Gets cleared just like
549     @TERM_INIT.
550    
551 root 1.1 Functions in the "urxvt" Package
552     urxvt::fatal $errormessage
553     Fatally aborts execution with the given error message. Avoid at all
554     costs! The only time this is acceptable is when the terminal process
555     starts up.
556    
557     urxvt::warn $string
558     Calls "rxvt_warn" with the given string which should not include a
559     newline. The module also overwrites the "warn" builtin with a
560     function that calls this function.
561    
562     Using this function has the advantage that its output ends up in the
563     correct place, e.g. on stderr of the connecting urxvtc client.
564    
565 root 1.20 Messages have a size limit of 1023 bytes currently.
566    
567 root 1.38 @terms = urxvt::termlist
568     Returns all urxvt::term objects that exist in this process,
569     regardless of wether they are started, being destroyed etc., so be
570     careful. Only term objects that have perl extensions attached will
571     be returned (because there is no urxvt::term objet associated with
572     others).
573    
574 root 1.1 $time = urxvt::NOW
575     Returns the "current time" (as per the event loop).
576    
577 root 1.13 urxvt::CurrentTime
578     urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask,
579     Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask,
580     Button5Mask, AnyModifier
581 root 1.27 urxvt::NoEventMask, KeyPressMask, KeyReleaseMask, ButtonPressMask,
582     ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask,
583     PointerMotionHintMask, Button1MotionMask, Button2MotionMask,
584     Button3MotionMask, Button4MotionMask, Button5MotionMask,
585     ButtonMotionMask, KeymapStateMask, ExposureMask, VisibilityChangeMask,
586     StructureNotifyMask, ResizeRedirectMask, SubstructureNotifyMask,
587     SubstructureRedirectMask, FocusChangeMask, PropertyChangeMask,
588     ColormapChangeMask, OwnerGrabButtonMask
589     urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify,
590     EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose,
591     GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify, DestroyNotify,
592     UnmapNotify, MapNotify, MapRequest, ReparentNotify, ConfigureNotify,
593     ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify,
594     CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest,
595     SelectionNotify, ColormapNotify, ClientMessage, MappingNotify
596 root 1.14 Various constants for use in X calls and event processing.
597 root 1.13
598 root 1.6 RENDITION
599     Rendition bitsets contain information about colour, font, font styles
600     and similar information for each screen cell.
601    
602     The following "macros" deal with changes in rendition sets. You should
603     never just create a bitset, you should always modify an existing one, as
604     they contain important information required for correct operation of
605     rxvt-unicode.
606    
607     $rend = urxvt::DEFAULT_RSTYLE
608     Returns the default rendition, as used when the terminal is starting
609     up or being reset. Useful as a base to start when creating
610     renditions.
611    
612     $rend = urxvt::OVERLAY_RSTYLE
613     Return the rendition mask used for overlays by default.
614    
615     $rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline
616     Return the bit that enabled bold, italic, blink, reverse-video and
617     underline, respectively. To enable such a style, just logically OR
618     it into the bitset.
619    
620     $foreground = urxvt::GET_BASEFG $rend
621     $background = urxvt::GET_BASEBG $rend
622     Return the foreground/background colour index, respectively.
623    
624 root 1.19 $rend = urxvt::SET_FGCOLOR $rend, $new_colour
625     $rend = urxvt::SET_BGCOLOR $rend, $new_colour
626 root 1.39 $rend = urxvt::SET_COLOR $rend, $new_fg, $new_bg
627 root 1.6 Replace the foreground/background colour in the rendition mask with
628     the specified one.
629    
630 root 1.19 $value = urxvt::GET_CUSTOM $rend
631 root 1.6 Return the "custom" value: Every rendition has 5 bits for use by
632     extensions. They can be set and changed as you like and are
633     initially zero.
634    
635 root 1.19 $rend = urxvt::SET_CUSTOM $rend, $new_value
636 root 1.6 Change the custom value.
637    
638 root 1.14 The "urxvt::anyevent" Class
639     The sole purpose of this class is to deliver an interface to the
640     "AnyEvent" module - any module using it will work inside urxvt without
641 root 1.19 further programming. The only exception is that you cannot wait on
642     condition variables, but non-blocking condvar use is ok. What this means
643     is that you cannot use blocking APIs, but the non-blocking variant
644     should work.
645 root 1.14
646 root 1.1 The "urxvt::term" Class
647 root 1.20 $term = new urxvt::term $envhashref, $rxvtname, [arg...]
648     Creates a new terminal, very similar as if you had started it with
649     system "$rxvtname, arg...". $envhashref must be a reference to a
650 root 1.21 %ENV-like hash which defines the environment of the new terminal.
651 root 1.20
652 root 1.21 Croaks (and probably outputs an error message) if the new instance
653 root 1.20 couldn't be created. Returns "undef" if the new instance didn't
654     initialise perl, and the terminal object otherwise. The "init" and
655 root 1.38 "start" hooks will be called before this call returns, and are free
656     to refer to global data (which is race free).
657 root 1.20
658 root 1.12 $term->destroy
659     Destroy the terminal object (close the window, free resources etc.).
660 root 1.28 Please note that rxvt will not exit as long as any event watchers
661 root 1.19 (timers, io watchers) are still active.
662 root 1.12
663 root 1.31 $term->exec_async ($cmd[, @args])
664     Works like the combination of the "fork"/"exec" builtins, which
665     executes ("starts") programs in the background. This function takes
666     care of setting the user environment before exec'ing the command
667     (e.g. "PATH") and should be preferred over explicit calls to "exec"
668     or "system".
669    
670     Returns the pid of the subprocess or "undef" on error.
671    
672 root 1.13 $isset = $term->option ($optval[, $set])
673     Returns true if the option specified by $optval is enabled, and
674     optionally change it. All option values are stored by name in the
675     hash %urxvt::OPTION. Options not enabled in this binary are not in
676     the hash.
677    
678     Here is a a likely non-exhaustive list of option names, please see
679     the source file /src/optinc.h to see the actual list:
680    
681     borderLess console cursorBlink cursorUnderline hold iconic insecure
682     intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
683 root 1.31 override-redirect pastableTabs pointerBlank reverseVideo scrollBar
684     scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput
685     scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs
686     transparent tripleclickwords utmpInhibit visualBell
687 root 1.13
688 root 1.1 $value = $term->resource ($name[, $newval])
689     Returns the current resource value associated with a given name and
690     optionally sets a new value. Setting values is most useful in the
691     "init" hook. Unset resources are returned and accepted as "undef".
692    
693     The new value must be properly encoded to a suitable character
694     encoding before passing it to this method. Similarly, the returned
695     value may need to be converted from the used encoding to text.
696    
697     Resource names are as defined in src/rsinc.h. Colours can be
698     specified as resource names of the form "color+<index>", e.g.
699     "color+5". (will likely change).
700    
701     Please note that resource strings will currently only be freed when
702     the terminal is destroyed, so changing options frequently will eat
703     memory.
704    
705     Here is a a likely non-exhaustive list of resource names, not all of
706 root 1.13 which are supported in every build, please see the source file
707     /src/rsinc.h to see the actual list:
708 root 1.1
709     answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
710     borderLess color cursorBlink cursorUnderline cutchars delete_key
711     display_name embed ext_bwidth fade font geometry hold iconName
712     imFont imLocale inputMethod insecure int_bwidth intensityStyles
713 root 1.31 italicFont jumpScroll lineSpace loginShell mapAlert meta8 modifier
714     mouseWheelScrollPage name override_redirect pastableTabs path perl_eval
715     perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay
716     preeditType print_pipe pty_fd reverseVideo saveLines scrollBar
717     scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness
718     scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle
719     secondaryScreen secondaryScroll selectstyle shade term_name title
720     transient_for transparent transparent_all tripleclickwords utmpInhibit
721     visualBell
722 root 1.1
723 root 1.22 $value = $term->x_resource ($pattern)
724     Returns the X-Resource for the given pattern, excluding the program
725     or class name, i.e. "$term->x_resource ("boldFont")" should return
726     the same value as used by this instance of rxvt-unicode. Returns
727     "undef" if no resource with that pattern exists.
728    
729     This method should only be called during the "on_start" hook, as
730     there is only one resource database per display, and later
731     invocations might return the wrong resources.
732    
733 root 1.17 $success = $term->parse_keysym ($keysym_spec, $command_string)
734     Adds a keymap translation exactly as specified via a resource. See
735 root 1.28 the "keysym" resource in the rxvt(1) manpage.
736 root 1.17
737 root 1.12 $rend = $term->rstyle ([$new_rstyle])
738     Return and optionally change the current rendition. Text that is
739     output by the terminal application will use this style.
740 root 1.11
741     ($row, $col) = $term->screen_cur ([$row, $col])
742     Return the current coordinates of the text cursor position and
743     optionally set it (which is usually bad as applications don't expect
744     that).
745    
746 root 1.1 ($row, $col) = $term->selection_mark ([$row, $col])
747     ($row, $col) = $term->selection_beg ([$row, $col])
748     ($row, $col) = $term->selection_end ([$row, $col])
749     Return the current values of the selection mark, begin or end
750     positions, and optionally set them to new values.
751    
752 root 1.23 $term->selection_make ($eventtime[, $rectangular])
753     Tries to make a selection as set by "selection_beg" and
754     "selection_end". If $rectangular is true (default: false), a
755     rectangular selection will be made. This is the prefered function to
756     make a selection.
757    
758 root 1.1 $success = $term->selection_grab ($eventtime)
759 root 1.23 Try to request the primary selection text from the server (for
760     example, as set by the next method). No visual feedback will be
761     given. This function is mostly useful from within "on_sel_grab"
762     hooks.
763 root 1.1
764     $oldtext = $term->selection ([$newtext])
765     Return the current selection text and optionally replace it by
766     $newtext.
767    
768 root 1.17 $term->overlay_simple ($x, $y, $text)
769     Create a simple multi-line overlay box. See the next method for
770     details.
771 root 1.6
772     $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
773 root 1.1 Create a new (empty) overlay at the given position with the given
774 root 1.6 width/height. $rstyle defines the initial rendition style (default:
775     "OVERLAY_RSTYLE").
776    
777     If $border is 2 (default), then a decorative border will be put
778     around the box.
779    
780     If either $x or $y is negative, then this is counted from the
781     right/bottom side, respectively.
782    
783     This method returns an urxvt::overlay object. The overlay will be
784     visible as long as the perl object is referenced.
785 root 1.1
786 root 1.7 The methods currently supported on "urxvt::overlay" objects are:
787 root 1.6
788 root 1.7 $overlay->set ($x, $y, $text, $rend)
789     Similar to "$term->ROW_t" and "$term->ROW_r" in that it puts
790     text in rxvt-unicode's special encoding and an array of
791     rendition values at a specific position inside the overlay.
792    
793     $overlay->hide
794     If visible, hide the overlay, but do not destroy it.
795    
796     $overlay->show
797     If hidden, display the overlay again.
798 root 1.1
799 root 1.13 $popup = $term->popup ($event)
800     Creates a new "urxvt::popup" object that implements a popup menu.
801     The $event *must* be the event causing the menu to pop up (a button
802     event, currently).
803    
804 root 1.12 $cellwidth = $term->strwidth ($string)
805 root 1.1 Returns the number of screen-cells this string would need. Correctly
806     accounts for wide and combining characters.
807    
808 root 1.12 $octets = $term->locale_encode ($string)
809 root 1.1 Convert the given text string into the corresponding locale
810     encoding.
811    
812 root 1.12 $string = $term->locale_decode ($octets)
813 root 1.1 Convert the given locale-encoded octets into a perl string.
814    
815 root 1.17 $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
816     XORs the rendition values in the given span with the provided value
817 root 1.23 (default: "RS_RVid"), which *MUST NOT* contain font styles. Useful
818     in refresh hooks to provide effects similar to the selection.
819 root 1.17
820     $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[,
821     $rstyle2]])
822     Similar to "scr_xor_span", but xors a rectangle instead. Trailing
823     whitespace will additionally be xored with the $rstyle2, which
824     defaults to "RS_RVid | RS_Uline", which removes reverse video again
825 root 1.23 and underlines it instead. Both styles *MUST NOT* contain font
826     styles.
827 root 1.17
828     $term->scr_bell
829     Ring the bell!
830    
831 root 1.12 $term->scr_add_lines ($string)
832     Write the given text string to the screen, as if output by the
833     application running inside the terminal. It may not contain command
834     sequences (escape codes), but is free to use line feeds, carriage
835     returns and tabs. The string is a normal text string, not in
836     locale-dependent encoding.
837    
838     Normally its not a good idea to use this function, as programs might
839     be confused by changes in cursor position or scrolling. Its useful
840     inside a "on_add_lines" hook, though.
841    
842 root 1.33 $term->scr_change_screen ($screen)
843     Switch to given screen - 0 primary, 1 secondary.
844    
845 root 1.12 $term->cmd_parse ($octets)
846     Similar to "scr_add_lines", but the argument must be in the
847     locale-specific encoding of the terminal and can contain command
848     sequences (escape codes) that will be interpreted.
849    
850 root 1.1 $term->tt_write ($octets)
851     Write the octets given in $data to the tty (i.e. as program input).
852 root 1.4 To pass characters instead of octets, you should convert your
853     strings first to the locale-specific encoding using
854     "$term->locale_encode".
855    
856 root 1.17 $old_events = $term->pty_ev_events ([$new_events])
857     Replaces the event mask of the pty watcher by the given event mask.
858     Can be used to suppress input and output handling to the pty/tty.
859     See the description of "urxvt::timer->events". Make sure to always
860     restore the previous value.
861    
862 root 1.35 $fd = $term->pty_fd
863     Returns the master file descriptor for the pty in use, or -1 if no
864     pty is used.
865    
866 root 1.12 $windowid = $term->parent
867     Return the window id of the toplevel window.
868    
869     $windowid = $term->vt
870     Return the window id of the terminal window.
871    
872 root 1.27 $term->vt_emask_add ($x_event_mask)
873     Adds the specified events to the vt event mask. Useful e.g. when you
874     want to receive pointer events all the times:
875    
876     $term->vt_emask_add (urxvt::PointerMotionMask);
877    
878 root 1.39 $term->focus_in
879     $term->focus_out
880     $term->key_press ($state, $keycode[, $time])
881     $term->key_release ($state, $keycode[, $time])
882     Deliver various fake events to to terminal.
883    
884 root 1.11 $window_width = $term->width
885     $window_height = $term->height
886     $font_width = $term->fwidth
887     $font_height = $term->fheight
888     $font_ascent = $term->fbase
889     $terminal_rows = $term->nrow
890     $terminal_columns = $term->ncol
891     $has_focus = $term->focus
892     $is_mapped = $term->mapped
893     $max_scrollback = $term->saveLines
894     $nrow_plus_saveLines = $term->total_rows
895 root 1.28 $topmost_scrollback_row = $term->top_row
896 root 1.11 Return various integers describing terminal characteristics.
897 root 1.4
898 root 1.20 $x_display = $term->display_id
899     Return the DISPLAY used by rxvt-unicode.
900    
901 root 1.17 $lc_ctype = $term->locale
902     Returns the LC_CTYPE category string used by this rxvt-unicode.
903    
904 root 1.20 $env = $term->env
905     Returns a copy of the environment in effect for the terminal as a
906     hashref similar to "\%ENV".
907 root 1.17
908 root 1.13 $modifiermask = $term->ModLevel3Mask
909     $modifiermask = $term->ModMetaMask
910     $modifiermask = $term->ModNumLockMask
911     Return the modifier masks corresponding to the "ISO Level 3 Shift"
912     (often AltGr), the meta key (often Alt) and the num lock key, if
913     applicable.
914    
915 root 1.33 $screen = $term->current_screen
916     Returns the currently displayed screen (0 primary, 1 secondary).
917    
918 root 1.34 $cursor_is_hidden = $term->hidden_cursor
919     Returns wether the cursor is currently hidden or not.
920    
921 root 1.4 $view_start = $term->view_start ([$newvalue])
922 root 1.28 Returns the row number of the topmost displayed line. Maximum value
923     is 0, which displays the normal terminal contents. Lower values
924 root 1.4 scroll this many lines into the scrollback buffer.
925    
926     $term->want_refresh
927     Requests a screen refresh. At the next opportunity, rxvt-unicode
928     will compare the on-screen display with its stored representation.
929     If they differ, it redraws the differences.
930    
931     Used after changing terminal contents to display them.
932    
933     $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
934     Returns the text of the entire row with number $row_number. Row 0 is
935     the topmost terminal line, row "$term->$ncol-1" is the bottommost
936     terminal line. The scrollback buffer starts at line -1 and extends
937 root 1.7 to line "-$term->nsaved". Nothing will be returned if a nonexistent
938     line is requested.
939 root 1.4
940     If $new_text is specified, it will replace characters in the current
941     line, starting at column $start_col (default 0), which is useful to
942 root 1.6 replace only parts of a line. The font index in the rendition will
943 root 1.4 automatically be updated.
944    
945     $text is in a special encoding: tabs and wide characters that use
946 root 1.33 more than one cell when displayed are padded with $urxvt::NOCHAR
947 root 1.35 (chr 65535) characters. Characters with combining characters and
948     other characters that do not fit into the normal tetx encoding will
949     be replaced with characters in the private use area.
950 root 1.4
951     You have to obey this encoding when changing text. The advantage is
952     that "substr" and similar functions work on screen cells and not on
953     characters.
954    
955     The methods "$term->special_encode" and "$term->special_decode" can
956     be used to convert normal strings into this encoding and vice versa.
957    
958     $rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])
959     Like "$term->ROW_t", but returns an arrayref with rendition bitsets.
960     Rendition bitsets contain information about colour, font, font
961     styles and similar information. See also "$term->ROW_t".
962    
963     When setting rendition, the font mask will be ignored.
964    
965 root 1.6 See the section on RENDITION, above.
966 root 1.4
967     $length = $term->ROW_l ($row_number[, $new_length])
968     Returns the number of screen cells that are in use ("the line
969 root 1.7 length"). Unlike the urxvt core, this returns "$term->ncol" if the
970     line is joined with the following one.
971    
972     $bool = $term->is_longer ($row_number)
973     Returns true if the row is part of a multiple-row logical "line"
974     (i.e. joined with the following row), which means all characters are
975     in use and it is continued on the next row (and possibly a
976     continuation of the previous row(s)).
977    
978     $line = $term->line ($row_number)
979     Create and return a new "urxvt::line" object that stores information
980     about the logical line that row $row_number is part of. It supports
981     the following methods:
982    
983 root 1.12 $text = $line->t ([$new_text])
984     Returns or replaces the full text of the line, similar to
985     "ROW_t"
986    
987     $rend = $line->r ([$new_rend])
988     Returns or replaces the full rendition array of the line,
989     similar to "ROW_r"
990 root 1.7
991     $length = $line->l
992     Returns the length of the line in cells, similar to "ROW_l".
993    
994     $rownum = $line->beg
995     $rownum = $line->end
996     Return the row number of the first/last row of the line,
997     respectively.
998    
999     $offset = $line->offset_of ($row, $col)
1000     Returns the character offset of the given row|col pair within
1001 root 1.23 the logical line. Works for rows outside the line, too, and
1002     returns corresponding offsets outside the string.
1003 root 1.7
1004     ($row, $col) = $line->coord_of ($offset)
1005     Translates a string offset into terminal coordinates again.
1006 root 1.4
1007 root 1.15 $text = $term->special_encode $string
1008 root 1.4 Converts a perl string into the special encoding used by
1009     rxvt-unicode, where one character corresponds to one screen cell.
1010     See "$term->ROW_t" for details.
1011    
1012     $string = $term->special_decode $text
1013     Converts rxvt-unicodes text reprsentation into a perl string. See
1014     "$term->ROW_t" for details.
1015    
1016 root 1.38 $success = $term->grab_button ($button, $modifiermask[, $window =
1017     $term->vt])
1018     $term->ungrab_button ($button, $modifiermask[, $window = $term->vt])
1019     Register/unregister a synchronous button grab. See the XGrabButton
1020     manpage.
1021 root 1.15
1022     $success = $term->grab ($eventtime[, $sync])
1023     Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1024     synchronous ($sync is true). Also remembers the grab timestampe.
1025    
1026     $term->allow_events_async
1027     Calls XAllowEvents with AsyncBoth for the most recent grab.
1028    
1029     $term->allow_events_sync
1030     Calls XAllowEvents with SyncBoth for the most recent grab.
1031    
1032     $term->allow_events_replay
1033     Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for
1034     the most recent grab.
1035    
1036     $term->ungrab
1037     Calls XUngrab for the most recent grab. Is called automatically on
1038     evaluation errors, as it is better to lose the grab in the error
1039     case as the session.
1040    
1041 root 1.33 $atom = $term->XInternAtom ($atom_name[, $only_if_exists])
1042     $atom_name = $term->XGetAtomName ($atom)
1043     @atoms = $term->XListProperties ($window)
1044     ($type,$format,$octets) = $term->XGetWindowProperty ($window, $property)
1045     $term->XChangeWindowProperty ($window, $property, $type, $format,
1046     $octets)
1047     $term->XDeleteProperty ($window, $property)
1048     $window = $term->DefaultRootWindow
1049     $term->XReparentWindow ($window, $parent, [$x, $y])
1050     $term->XMapWindow ($window)
1051     $term->XUnmapWindow ($window)
1052     $term->XMoveResizeWindow ($window, $x, $y, $width, $height)
1053     ($x, $y, $child_window) = $term->XTranslateCoordinates ($src, $dst, $x,
1054     $y)
1055     $term->XChangeInput ($window, $add_events[, $del_events])
1056     Various X or X-related functions. The $term object only serves as
1057     the source of the display, otherwise those functions map
1058     more-or-less directory onto the X functions of the same name.
1059    
1060 root 1.13 The "urxvt::popup" Class
1061 root 1.19 $popup->add_title ($title)
1062     Adds a non-clickable title to the popup.
1063    
1064     $popup->add_separator ([$sepchr])
1065     Creates a separator, optionally using the character given as
1066     $sepchr.
1067    
1068     $popup->add_button ($text, $cb)
1069     Adds a clickable button to the popup. $cb is called whenever it is
1070     selected.
1071    
1072     $popup->add_toggle ($text, $cb, $initial_value)
1073     Adds a toggle/checkbox item to the popup. Teh callback gets called
1074     whenever it gets toggled, with a boolean indicating its value as its
1075     first argument.
1076    
1077     $popup->show
1078     Displays the popup (which is initially hidden).
1079    
1080 root 1.1 The "urxvt::timer" Class
1081 root 1.21 This class implements timer watchers/events. Time is represented as a
1082     fractional number of seconds since the epoch. Example:
1083 root 1.1
1084 root 1.21 $term->{overlay} = $term->overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
1085     $term->{timer} = urxvt::timer
1086     ->new
1087     ->interval (1)
1088     ->cb (sub {
1089     $term->{overlay}->set (0, 0,
1090     sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
1091     });
1092    
1093     $timer = new urxvt::timer
1094     Create a new timer object in started state. It is scheduled to fire
1095     immediately.
1096    
1097     $timer = $timer->cb (sub { my ($timer) = @_; ... })
1098     Set the callback to be called when the timer triggers.
1099    
1100     $tstamp = $timer->at
1101     Return the time this watcher will fire next.
1102    
1103     $timer = $timer->set ($tstamp)
1104     Set the time the event is generated to $tstamp.
1105    
1106     $timer = $timer->interval ($interval)
1107     Normally (and when $interval is 0), the timer will automatically
1108     stop after it has fired once. If $interval is non-zero, then the
1109     timer is automatically rescheduled at the given intervals.
1110 root 1.6
1111 root 1.21 $timer = $timer->start
1112     Start the timer.
1113 root 1.1
1114 root 1.21 $timer = $timer->start ($tstamp)
1115     Set the event trigger time to $tstamp and start the timer.
1116 root 1.1
1117 root 1.31 $timer = $timer->after ($delay)
1118     Like "start", but sets the expiry timer to c<urxvt::NOW + $delay>.
1119    
1120 root 1.21 $timer = $timer->stop
1121     Stop the timer.
1122 root 1.1
1123     The "urxvt::iow" Class
1124 root 1.21 This class implements io watchers/events. Example:
1125 root 1.1
1126 root 1.21 $term->{socket} = ...
1127     $term->{iow} = urxvt::iow
1128     ->new
1129     ->fd (fileno $term->{socket})
1130     ->events (urxvt::EVENT_READ)
1131     ->start
1132     ->cb (sub {
1133     my ($iow, $revents) = @_;
1134     # $revents must be 1 here, no need to check
1135     sysread $term->{socket}, my $buf, 8192
1136     or end-of-file;
1137     });
1138    
1139     $iow = new urxvt::iow
1140     Create a new io watcher object in stopped state.
1141    
1142     $iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })
1143     Set the callback to be called when io events are triggered.
1144     $reventmask is a bitset as described in the "events" method.
1145    
1146     $iow = $iow->fd ($fd)
1147     Set the filedescriptor (not handle) to watch.
1148    
1149     $iow = $iow->events ($eventmask)
1150     Set the event mask to watch. The only allowed values are
1151     "urxvt::EVENT_READ" and "urxvt::EVENT_WRITE", which might be ORed
1152     together, or "urxvt::EVENT_NONE".
1153 root 1.1
1154 root 1.21 $iow = $iow->start
1155     Start watching for requested events on the given handle.
1156 root 1.1
1157 root 1.21 $iow = $iow->stop
1158     Stop watching for events on the given filehandle.
1159 root 1.1
1160 root 1.32 The "urxvt::iw" Class
1161     This class implements idle watchers, that get called automatically when
1162     the process is idle. They should return as fast as possible, after doing
1163     some useful work.
1164    
1165     $iw = new urxvt::iw
1166     Create a new idle watcher object in stopped state.
1167    
1168     $iw = $iw->cb (sub { my ($iw) = @_; ... })
1169     Set the callback to be called when the watcher triggers.
1170    
1171     $timer = $timer->start
1172     Start the watcher.
1173    
1174     $timer = $timer->stop
1175     Stop the watcher.
1176    
1177     The "urxvt::pw" Class
1178     This class implements process watchers. They create an event whenever a
1179     process exits, after which they stop automatically.
1180    
1181     my $pid = fork;
1182     ...
1183     $term->{pw} = urxvt::pw
1184     ->new
1185     ->start ($pid)
1186     ->cb (sub {
1187     my ($pw, $exit_status) = @_;
1188     ...
1189     });
1190    
1191     $pw = new urxvt::pw
1192     Create a new process watcher in stopped state.
1193    
1194     $pw = $pw->cb (sub { my ($pw, $exit_status) = @_; ... })
1195     Set the callback to be called when the timer triggers.
1196    
1197     $pw = $timer->start ($pid)
1198     Tells the wqtcher to start watching for process $pid.
1199    
1200     $pw = $pw->stop
1201     Stop the watcher.
1202    
1203 root 1.1 ENVIRONMENT
1204     URXVT_PERL_VERBOSITY
1205 root 1.21 This variable controls the verbosity level of the perl extension. Higher
1206     numbers indicate more verbose output.
1207 root 1.1
1208 root 1.21 == 0 - fatal messages
1209     >= 3 - script loading and management
1210 root 1.23 >=10 - all called hooks
1211     >=11 - hook reutrn values
1212 root 1.1
1213     AUTHOR
1214 root 1.21 Marc Lehmann <pcg@goof.com>
1215     http://software.schmorp.de/pkg/rxvt-unicode
1216 root 1.1