ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.54
Committed: Wed Dec 12 23:58:05 2007 UTC (16 years, 5 months ago) by ayin
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.53: +0 -0 lines
State: FILE REMOVED
Log Message:
*** empty log message ***

File Contents

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