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