1urxvt256c(3)                     RXVT-UNICODE                     urxvt256c(3)
2
3
4

NAME

6       urxvt256cperl - rxvt-unicode's embedded perl interpreter
7

SYNOPSIS

9          # create a file grab_test in $HOME:
10
11          sub on_sel_grab {
12             warn "you selected ", $_[0]->selection;
13             ()
14          }
15
16          # start a urxvt256c using it:
17
18          urxvt256c --perl-lib $HOME -pe grab_test
19

DESCRIPTION

21       Every time a terminal object gets created, extension scripts specified
22       via the "perl" resource are loaded and associated with it.
23
24       Scripts are compiled in a 'use strict' and 'use utf8' environment, and
25       thus must be encoded as UTF-8.
26
27       Each script will only ever be loaded once, even in urxvt256cd, where
28       scripts will be shared (but not enabled) for all terminals.
29
30       You can disable the embedded perl interpreter by setting both "perl-
31       ext" and "perl-ext-common" resources to the empty string.
32

PREPACKAGED EXTENSIONS

34       This section describes the extensions delivered with this release. You
35       can find them in /usr/lib64/urxvt/perl/.
36
37       You can activate them like this:
38
39         urxvt256c -pe <extensionname>
40
41       Or by adding them to the resource for extensions loaded by default:
42
43         URxvt.perl-ext-common: default,selection-autotransform
44
45       selection (enabled by default)
46           (More) intelligent selection. This extension tries to be more
47           intelligent when the user extends selections (double-click and
48           further clicks). Right now, it tries to select words, urls and
49           complete shell-quoted arguments, which is very convenient, too, if
50           your ls supports "--quoting-style=shell".
51
52           A double-click usually selects the word under the cursor, further
53           clicks will enlarge the selection.
54
55           The selection works by trying to match a number of regexes and
56           displaying them in increasing order of length. You can add your own
57           regexes by specifying resources of the form:
58
59              URxvt.selection.pattern-0: perl-regex
60              URxvt.selection.pattern-1: perl-regex
61              ...
62
63           The index number (0, 1...) must not have any holes, and each regex
64           must contain at least one pair of capturing parentheses, which will
65           be used for the match. For example, the following adds a regex that
66           matches everything between two vertical bars:
67
68              URxvt.selection.pattern-0: \\|([^|]+)\\|
69
70           Another example: Programs I use often output "absolute path: " at
71           the beginning of a line when they process multiple files. The
72           following pattern matches the filename (note, there is a single
73           space at the very end):
74
75              URxvt.selection.pattern-0: ^(/[^:]+):\
76
77           You can look at the source of the selection extension to see more
78           interesting uses, such as parsing a line from beginning to end.
79
80           This extension also offers following bindable keyboard commands:
81
82           rot13
83               Rot-13 the selection when activated. Used via keyboard trigger:
84
85                  URxvt.keysym.C-M-r: perl:selection:rot13
86
87       option-popup (enabled by default)
88           Binds a popup menu to Ctrl-Button2 that lets you toggle (some)
89           options at runtime.
90
91           Other extensions can extend this popup menu by pushing a code
92           reference onto "@{ $term-"{option_popup_hook} }>, which gets called
93           whenever the popup is being displayed.
94
95           Its sole argument is the popup menu, which can be modified.  It
96           should either return nothing or a string, the initial boolean value
97           and a code reference. The string will be used as button text and
98           the code reference will be called when the toggle changes, with the
99           new boolean value as first argument.
100
101           The following will add an entry "myoption" that changes
102           "$self->{myoption}":
103
104              push @{ $self->{term}{option_popup_hook} }, sub {
105                 ("my option" => $myoption, sub { $self->{myoption} = $_[0] })
106              };
107
108       selection-popup (enabled by default)
109           Binds a popup menu to Ctrl-Button3 that lets you convert the
110           selection text into various other formats/action (such as uri
111           unescaping, perl evaluation, web-browser starting etc.), depending
112           on content.
113
114           Other extensions can extend this popup menu by pushing a code
115           reference onto "@{ $term-"{selection_popup_hook} }>, which gets
116           called whenever the popup is being displayed.
117
118           Its sole argument is the popup menu, which can be modified. The
119           selection is in $_, which can be used to decide whether to add
120           something or not.  It should either return nothing or a string and
121           a code reference. The string will be used as button text and the
122           code reference will be called when the button gets activated and
123           should transform $_.
124
125           The following will add an entry "a to b" that transforms all "a"s
126           in the selection to "b"s, but only if the selection currently
127           contains any "a"s:
128
129              push @{ $self->{term}{selection_popup_hook} }, sub {
130                 /a/ ? ("a to b" => sub { s/a/b/g }
131                     : ()
132              };
133
134       searchable-scrollback<hotkey> (enabled by default)
135           Adds regex search functionality to the scrollback buffer, triggered
136           by a hotkey (default: "M-s"). While in search mode, normal terminal
137           input/output is suspended and a regex is displayed at the bottom of
138           the screen.
139
140           Inputting characters appends them to the regex and continues
141           incremental search. "BackSpace" removes a character from the regex,
142           "Up" and "Down" search upwards/downwards in the scrollback buffer,
143           "End" jumps to the bottom. "Escape" leaves search mode and returns
144           to the point where search was started, while "Enter" or "Return"
145           stay at the current position and additionally stores the first
146           match in the current line into the primary selection if the "Shift"
147           modifier is active.
148
149           The regex defaults to "(?i)", resulting in a case-insensitive
150           search. To get a case-sensitive search you can delete this prefix
151           using "BackSpace" or simply use an uppercase character which
152           removes the "(?i)" prefix.
153
154           See perlre for more info about perl regular expression syntax.
155
156       readline (enabled by default)
157           A support package that tries to make editing with readline easier.
158           At the moment, it reacts to clicking shift-left mouse button by
159           trying to move the text cursor to this position. It does so by
160           generating as many cursor-left or cursor-right keypresses as
161           required (this only works for programs that correctly support wide
162           characters).
163
164           To avoid too many false positives, this is only done when:
165
166           - the tty is in ICANON state.
167           - the text cursor is visible.
168           - the primary screen is currently being displayed.
169           - the mouse is on the same (multi-row-) line as the text cursor.
170
171           The normal selection mechanism isn't disabled, so quick successive
172           clicks might interfere with selection creation in harmless ways.
173
174       selection-autotransform
175           This selection allows you to do automatic transforms on a selection
176           whenever a selection is made.
177
178           It works by specifying perl snippets (most useful is a single
179           "s///" operator) that modify $_ as resources:
180
181              URxvt.selection-autotransform.0: transform
182              URxvt.selection-autotransform.1: transform
183              ...
184
185           For example, the following will transform selections of the form
186           "filename:number", often seen in compiler messages, into "vi
187           +$filename $word":
188
189              URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/vi +$2 \\Q$1\\E\\x0d/
190
191           And this example matches the same,but replaces it with vi-commands
192           you can paste directly into your (vi :) editor:
193
194              URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/
195
196           Of course, this can be modified to suit your needs and your editor
197           :)
198
199           To expand the example above to typical perl error messages ("XXX at
200           FILENAME line YYY."), you need a slightly more elaborate solution:
201
202              URxvt.selection.pattern-0: ( at .*? line \\d+[,.])
203              URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)[,.]$/:e \\Q$1\E\\x0d:$2\\x0d/
204
205           The first line tells the selection code to treat the unchanging
206           part of every error message as a selection pattern, and the second
207           line transforms the message into vi commands to load the file.
208
209       tabbed
210           This transforms the terminal into a tabbar with additional
211           terminals, that is, it implements what is commonly referred to as
212           "tabbed terminal". The topmost line displays a "[NEW]" button,
213           which, when clicked, will add a new tab, followed by one button per
214           tab.
215
216           Clicking a button will activate that tab. Pressing Shift-Left and
217           Shift-Right will switch to the tab left or right of the current
218           one, while Shift-Down creates a new tab.
219
220           The tabbar itself can be configured similarly to a normal terminal,
221           but with a resource class of "URxvt.tabbed". In addition, it
222           supports the following four resources (shown with defaults):
223
224              URxvt.tabbed.tabbar-fg: <colour-index, default 3>
225              URxvt.tabbed.tabbar-bg: <colour-index, default 0>
226              URxvt.tabbed.tab-fg:    <colour-index, default 0>
227              URxvt.tabbed.tab-bg:    <colour-index, default 1>
228
229           See COLOR AND GRAPHICS in the urxvt256c(1) manpage for valid
230           indices.
231
232       matcher
233           Uses per-line display filtering ("on_line_update") to underline
234           text matching a certain pattern and make it clickable. When clicked
235           with the mouse button specified in the "matcher.button" resource
236           (default 2, or middle), the program specified in the
237           "matcher.launcher" resource (default, the "urlLauncher" resource,
238           "sensible-browser") will be started with the matched text as first
239           argument.  The default configuration is suitable for matching URLs
240           and launching a web browser, like the former "mark-urls" extension.
241
242           The default pattern to match URLs can be overridden with the
243           "matcher.pattern.0" resource, and additional patterns can be
244           specified with numbered patterns, in a manner similar to the
245           "selection" extension.  The launcher can also be overridden on a
246           per-pattern basis.
247
248           It is possible to activate the most recently seen match from the
249           keyboard.  Simply bind a keysym to "perl:matcher" as seen in the
250           example below.
251
252           Example configuration:
253
254               URxvt.perl-ext:           default,matcher
255               URxvt.urlLauncher:        sensible-browser
256               URxvt.keysym.C-Delete:    perl:matcher
257               URxvt.matcher.button:     1
258               URxvt.matcher.pattern.1:  \\bwww\\.[\\w-]+\\.[\\w./?&@#-]*[\\w/-]
259               URxvt.matcher.pattern.2:  \\B(/\\S+?):(\\d+)(?=:|$)
260               URxvt.matcher.launcher.2: gvim +$2 $1
261
262       xim-onthespot
263           This (experimental) perl extension implements OnTheSpot editing. It
264           does not work perfectly, and some input methods don't seem to work
265           well with OnTheSpot editing in general, but it seems to work at
266           least for SCIM and kinput2.
267
268           You enable it by specifying this extension and a preedit style of
269           "OnTheSpot", i.e.:
270
271              urxvt256c -pt OnTheSpot -pe xim-onthespot
272
273       kuake<hotkey>
274           A very primitive quake-console-like extension. It was inspired by a
275           description of how the programs "kuake" and "yakuake" work:
276           Whenever the user presses a global accelerator key (by default
277           "F10"), the terminal will show or hide itself. Another press of the
278           accelerator key will hide or show it again.
279
280           Initially, the window will not be shown when using this extension.
281
282           This is useful if you need a single terminal that is not using any
283           desktop space most of the time but is quickly available at the
284           press of a key.
285
286           The accelerator key is grabbed regardless of any modifiers, so this
287           extension will actually grab a physical key just for this function.
288
289           If you want a quake-like animation, tell your window manager to do
290           so (fvwm can do it).
291
292       overlay-osc
293           This extension implements some OSC commands to display timed popups
294           on the screen - useful for status displays from within scripts. You
295           have to read the sources for more info.
296
297       block-graphics-to-ascii
298           A not very useful example of filtering all text output to the
299           terminal by replacing all line-drawing characters (U+2500 ..
300           U+259F) by a similar-looking ascii character.
301
302       digital-clock
303           Displays a digital clock using the built-in overlay.
304
305       remote-clipboard
306           Somewhat of a misnomer, this extension adds two menu entries to the
307           selection popup that allows one to run external commands to store
308           the selection somewhere and fetch it again.
309
310           We use it to implement a "distributed selection mechanism", which
311           just means that one command uploads the file to a remote server,
312           and another reads it.
313
314           The commands can be set using the "URxvt.remote-selection.store"
315           and "URxvt.remote-selection.fetch" resources. The first should read
316           the selection to store from STDIN (always in UTF-8), the second
317           should provide the selection data on STDOUT (also in UTF-8).
318
319           The defaults (which are likely useless to you) use rsh and cat:
320
321              URxvt.remote-selection.store: rsh ruth 'cat >/tmp/distributed-selection'
322              URxvt.remote-selection.fetch: rsh ruth 'cat /tmp/distributed-selection'
323
324       selection-pastebin
325           This is a little rarely useful extension that uploads the selection
326           as textfile to a remote site (or does other things). (The
327           implementation is not currently secure for use in a multiuser
328           environment as it writes to /tmp directly.).
329
330           It listens to the "selection-pastebin:remote-pastebin" keyboard
331           command, i.e.
332
333              URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin
334
335           Pressing this combination runs a command with "%" replaced by the
336           name of the textfile. This command can be set via a resource:
337
338              URxvt.selection-pastebin.cmd: rsync -apP % ruth:/var/www/www.ta-sa.org/files/txt/.
339
340           And the default is likely not useful to anybody but the few people
341           around here :)
342
343           The name of the textfile is the hex encoded md5 sum of the
344           selection, so the same content should lead to the same filename.
345
346           After a successful upload the selection will be replaced by the
347           text given in the "selection-pastebin-url" resource (again, the %
348           is the placeholder for the filename):
349
350              URxvt.selection-pastebin.url: http://www.ta-sa.org/files/txt/%
351
352           Note to xrdb users: xrdb uses the C preprocessor, which might
353           interpret the double "/" characters as comment start. Use
354           "\057\057" instead, which works regardless of whether xrdb is used
355           to parse the resource file or not.
356
357       macosx-clipboard and macosx-clipboard-native
358           These two modules implement an extended clipboard for Mac OS X.
359           They are used like this:
360
361              URxvt.perl-ext-common: default,macosx-clipboard
362              URxvt.keysym.M-c: perl:macosx-clipboard:copy
363              URxvt.keysym.M-v: perl:macosx-clipboard:paste
364
365           The difference between them is that the native variant requires a
366           perl from apple's devkit or so, and "macosx-clipboard" requires the
367           "Mac::Pasteboard" module, works with other perls, has fewer bugs,
368           is simpler etc. etc.
369
370       example-refresh-hooks
371           Displays a very simple digital clock in the upper right corner of
372           the window. Illustrates overwriting the refresh callbacks to create
373           your own overlays or changes.
374
375       confirm-paste
376           Displays a confirmation dialog when a paste containing at least a
377           full line is detected.
378

API DOCUMENTATION

380   General API Considerations
381       All objects (such as terminals, time watchers etc.) are typical
382       reference-to-hash objects. The hash can be used to store anything you
383       like. All members starting with an underscore (such as "_ptr" or
384       "_hook") are reserved for internal uses and MUST NOT be accessed or
385       modified).
386
387       When objects are destroyed on the C++ side, the perl object hashes are
388       emptied, so its best to store related objects such as time watchers and
389       the like inside the terminal object so they get destroyed as soon as
390       the terminal is destroyed.
391
392       Argument names also often indicate the type of a parameter. Here are
393       some hints on what they mean:
394
395       $text
396           Rxvt-unicode's special way of encoding text, where one "unicode"
397           character always represents one screen cell. See ROW_t for a
398           discussion of this format.
399
400       $string
401           A perl text string, with an emphasis on text. It can store all
402           unicode characters and is to be distinguished with text encoded in
403           a specific encoding (often locale-specific) and binary data.
404
405       $octets
406           Either binary data or - more common - a text string encoded in a
407           locale-specific way.
408
409   Extension Objects
410       Every perl extension is a perl class. A separate perl object is created
411       for each terminal, and each terminal has its own set of extenion
412       objects, which are passed as the first parameter to hooks. So
413       extensions can use their $self object without having to think about
414       clashes with other extensions or other terminals, with the exception of
415       methods and members that begin with an underscore character "_": these
416       are reserved for internal use.
417
418       Although it isn't a "urxvt::term" object, you can call all methods of
419       the "urxvt::term" class on this object.
420
421       It has the following methods and data members:
422
423       $urxvt_term = $self->{term}
424           Returns the "urxvt::term" object associated with this instance of
425           the extension. This member must not be changed in any way.
426
427       $self->enable ($hook_name => $cb, [$hook_name => $cb..])
428           Dynamically enable the given hooks (named without the "on_" prefix)
429           for this extension, replacing any previous hook. This is useful
430           when you want to overwrite time-critical hooks only temporarily.
431
432       $self->disable ($hook_name[, $hook_name..])
433           Dynamically disable the given hooks.
434
435   Hooks
436       The following subroutines can be declared in extension files, and will
437       be called whenever the relevant event happens.
438
439       The first argument passed to them is an extension object as described
440       in the in the "Extension Objects" section.
441
442       All of these hooks must return a boolean value. If any of the called
443       hooks returns true, then the event counts as being consumed, and the
444       relevant action might not be carried out by the C++ code.
445
446       When in doubt, return a false value (preferably "()").
447
448       on_init $term
449           Called after a new terminal object has been initialized, but before
450           windows are created or the command gets run. Most methods are
451           unsafe to call or deliver senseless data, as terminal size and
452           other characteristics have not yet been determined. You can safely
453           query and change resources and options, though. For many purposes
454           the "on_start" hook is a better place.
455
456       on_start $term
457           Called at the very end of initialisation of a new terminal, just
458           before trying to map (display) the toplevel and returning to the
459           main loop.
460
461       on_destroy $term
462           Called whenever something tries to destroy terminal, when the
463           terminal is still fully functional (not for long, though).
464
465       on_reset $term
466           Called after the screen is "reset" for any reason, such as resizing
467           or control sequences. Here is where you can react on changes to
468           size-related variables.
469
470       on_child_start $term, $pid
471           Called just after the child process has been "fork"ed.
472
473       on_child_exit $term, $status
474           Called just after the child process has exited. $status is the
475           status from "waitpid".
476
477       on_sel_make $term, $eventtime
478           Called whenever a selection has been made by the user, but before
479           the selection text is copied, so changes to the beginning, end or
480           type of the selection will be honored.
481
482           Returning a true value aborts selection making by urxvt, in which
483           case you have to make a selection yourself by calling
484           "$term->selection_grab".
485
486       on_sel_grab $term, $eventtime
487           Called whenever a selection has been copied, but before the
488           selection is requested from the server.  The selection text can be
489           queried and changed by calling "$term->selection".
490
491           Returning a true value aborts selection grabbing. It will still be
492           highlighted.
493
494       on_sel_extend $term
495           Called whenever the user tries to extend the selection (e.g. with a
496           double click) and is either supposed to return false (normal
497           operation), or should extend the selection itself and return true
498           to suppress the built-in processing. This can happen multiple
499           times, as long as the callback returns true, it will be called on
500           every further click by the user and is supposed to enlarge the
501           selection more and more, if possible.
502
503           See the selection example extension.
504
505       on_view_change $term, $offset
506           Called whenever the view offset changes, i.e. the user or program
507           scrolls. Offset 0 means display the normal terminal, positive
508           values show this many lines of scrollback.
509
510       on_scroll_back $term, $lines, $saved
511           Called whenever lines scroll out of the terminal area into the
512           scrollback buffer. $lines is the number of lines scrolled out and
513           may be larger than the scroll back buffer or the terminal.
514
515           It is called before lines are scrolled out (so rows 0 .. min
516           ($lines - 1, $nrow - 1) represent the lines to be scrolled out).
517           $saved is the total number of lines that will be in the scrollback
518           buffer.
519
520       on_osc_seq $term, $op, $args, $resp
521           Called on every OSC sequence and can be used to suppress it or
522           modify its behaviour. The default should be to return an empty
523           list. A true value suppresses execution of the request completely.
524           Make sure you don't get confused by recursive invocations when you
525           output an OSC sequence within this callback.
526
527           "on_osc_seq_perl" should be used for new behaviour.
528
529       on_osc_seq_perl $term, $args, $resp
530           Called whenever the ESC ] 777 ; string ST command sequence (OSC =
531           operating system command) is processed. Cursor position and other
532           state information is up-to-date when this happens. For
533           interoperability, the string should start with the extension name
534           (sans -osc) and a semicolon, to distinguish it from commands for
535           other extensions, and this might be enforced in the future.
536
537           For example, "overlay-osc" uses this:
538
539              sub on_osc_seq_perl {
540                 my ($self, $osc, $resp) = @_;
541
542                 return unless $osc =~ s/^overlay;//;
543
544                 ... process remaining $osc string
545              }
546
547           Be careful not ever to trust (in a security sense) the data you
548           receive, as its source can not easily be controlled (e-mail
549           content, messages from other users on the same system etc.).
550
551           For responses, $resp contains the end-of-args separator used by the
552           sender.
553
554       on_add_lines $term, $string
555           Called whenever text is about to be output, with the text as
556           argument. You can filter/change and output the text yourself by
557           returning a true value and calling "$term->scr_add_lines" yourself.
558           Please note that this might be very slow, however, as your hook is
559           called for all text being output.
560
561       on_tt_write $term, $octets
562           Called whenever some data is written to the tty/pty and can be used
563           to suppress or filter tty input.
564
565       on_tt_paste $term, $octets
566           Called whenever text is about to be pasted, with the text as
567           argument. You can filter/change and paste the text yourself by
568           returning a true value and calling "$term->tt_paste" yourself.
569           $octets is locale-encoded.
570
571       on_line_update $term, $row
572           Called whenever a line was updated or changed. Can be used to
573           filter screen output (e.g. underline urls or other useless stuff).
574           Only lines that are being shown will be filtered, and, due to
575           performance reasons, not always immediately.
576
577           The row number is always the topmost row of the line if the line
578           spans multiple rows.
579
580           Please note that, if you change the line, then the hook might get
581           called later with the already-modified line (e.g. if unrelated
582           parts change), so you cannot just toggle rendition bits, but only
583           set them.
584
585       on_refresh_begin $term
586           Called just before the screen gets redrawn. Can be used for overlay
587           or similar effects by modifying the terminal contents in
588           refresh_begin, and restoring them in refresh_end. The built-in
589           overlay and selection display code is run after this hook, and
590           takes precedence.
591
592       on_refresh_end $term
593           Called just after the screen gets redrawn. See "on_refresh_begin".
594
595       on_user_command $term, $string
596           Called whenever a user-configured event is being activated (e.g.
597           via a "perl:string" action bound to a key, see description of the
598           keysym resource in the urxvt256c(1) manpage).
599
600           The event is simply the action string. This interface is assumed to
601           change slightly in the future.
602
603       on_resize_all_windows $term, $new_width, $new_height
604           Called just after the new window size has been calculated, but
605           before windows are actually being resized or hints are being set.
606           If this hook returns TRUE, setting of the window hints is being
607           skipped.
608
609       on_x_event $term, $event
610           Called on every X event received on the vt window (and possibly
611           other windows). Should only be used as a last resort. Most event
612           structure members are not passed.
613
614       on_root_event $term, $event
615           Like "on_x_event", but is called for events on the root window.
616
617       on_focus_in $term
618           Called whenever the window gets the keyboard focus, before rxvt-
619           unicode does focus in processing.
620
621       on_focus_out $term
622           Called whenever the window loses keyboard focus, before rxvt-
623           unicode does focus out processing.
624
625       on_configure_notify $term, $event
626       on_property_notify $term, $event
627       on_key_press $term, $event, $keysym, $octets
628       on_key_release $term, $event, $keysym
629       on_button_press $term, $event
630       on_button_release $term, $event
631       on_motion_notify $term, $event
632       on_map_notify $term, $event
633       on_unmap_notify $term, $event
634           Called whenever the corresponding X event is received for the
635           terminal. If the hook returns true, then the event will be ignored
636           by rxvt-unicode.
637
638           The event is a hash with most values as named by Xlib (see the
639           XEvent manpage), with the additional members "row" and "col", which
640           are the (real, not screen-based) row and column under the mouse
641           cursor.
642
643           "on_key_press" additionally receives the string rxvt-unicode would
644           output, if any, in locale-specific encoding.
645
646           subwindow.
647
648       on_client_message $term, $event
649       on_wm_protocols $term, $event
650       on_wm_delete_window $term, $event
651           Called when various types of ClientMessage events are received (all
652           with format=32, WM_PROTOCOLS or WM_PROTOCOLS:WM_DELETE_WINDOW).
653
654       on_bell $term
655           Called on receipt of a bell character.
656
657   Variables in the "urxvt" Package
658       $urxvt::LIBDIR
659           The rxvt-unicode library directory, where, among other things, the
660           perl modules and scripts are stored.
661
662       $urxvt::RESCLASS, $urxvt::RESCLASS
663           The resource class and name rxvt-unicode uses to look up X
664           resources.
665
666       $urxvt::RXVTNAME
667           The basename of the installed binaries, usually "urxvt".
668
669       $urxvt::TERM
670           The current terminal. This variable stores the current
671           "urxvt::term" object, whenever a callback/hook is executing.
672
673       @urxvt::TERM_INIT
674           All code references in this array will be called as methods of the
675           next newly created "urxvt::term" object (during the "on_init"
676           phase). The array gets cleared before the code references that were
677           in it are being executed, so references can push themselves onto it
678           again if they so desire.
679
680           This complements to the perl-eval command line option, but gets
681           executed first.
682
683       @urxvt::TERM_EXT
684           Works similar to @TERM_INIT, but contains perl package/class names,
685           which get registered as normal extensions after calling the hooks
686           in @TERM_INIT but before other extensions. Gets cleared just like
687           @TERM_INIT.
688
689   Functions in the "urxvt" Package
690       urxvt::fatal $errormessage
691           Fatally aborts execution with the given error message (which should
692           include a trailing newline). Avoid at all costs! The only time this
693           is acceptable (and useful) is in the init hook, where it prevents
694           the terminal from starting up.
695
696       urxvt::warn $string
697           Calls "rxvt_warn" with the given string which should include a
698           trailing newline. The module also overwrites the "warn" builtin
699           with a function that calls this function.
700
701           Using this function has the advantage that its output ends up in
702           the correct place, e.g. on stderr of the connecting urxvtc client.
703
704           Messages have a size limit of 1023 bytes currently.
705
706       @terms = urxvt::termlist
707           Returns all urxvt::term objects that exist in this process,
708           regardless of whether they are started, being destroyed etc., so be
709           careful. Only term objects that have perl extensions attached will
710           be returned (because there is no urxvt::term objet associated with
711           others).
712
713       $time = urxvt::NOW
714           Returns the "current time" (as per the event loop).
715
716       urxvt::CurrentTime
717       urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask,
718       Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask,
719       Button5Mask, AnyModifier
720       urxvt::NoEventMask, KeyPressMask, KeyReleaseMask, ButtonPressMask,
721       ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask,
722       PointerMotionHintMask, Button1MotionMask, Button2MotionMask,
723       Button3MotionMask, Button4MotionMask, Button5MotionMask,
724       ButtonMotionMask, KeymapStateMask, ExposureMask, VisibilityChangeMask,
725       StructureNotifyMask, ResizeRedirectMask, SubstructureNotifyMask,
726       SubstructureRedirectMask, FocusChangeMask, PropertyChangeMask,
727       ColormapChangeMask, OwnerGrabButtonMask
728       urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify,
729       EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose,
730       GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify,
731       DestroyNotify, UnmapNotify, MapNotify, MapRequest, ReparentNotify,
732       ConfigureNotify, ConfigureRequest, GravityNotify, ResizeRequest,
733       CirculateNotify, CirculateRequest, PropertyNotify, SelectionClear,
734       SelectionRequest, SelectionNotify, ColormapNotify, ClientMessage,
735       MappingNotify
736           Various constants for use in X calls and event processing.
737
738   RENDITION
739       Rendition bitsets contain information about colour, font, font styles
740       and similar information for each screen cell.
741
742       The following "macros" deal with changes in rendition sets. You should
743       never just create a bitset, you should always modify an existing one,
744       as they contain important information required for correct operation of
745       rxvt-unicode.
746
747       $rend = urxvt::DEFAULT_RSTYLE
748           Returns the default rendition, as used when the terminal is
749           starting up or being reset. Useful as a base to start when creating
750           renditions.
751
752       $rend = urxvt::OVERLAY_RSTYLE
753           Return the rendition mask used for overlays by default.
754
755       $rendbit = urxvt::RS_Bold, urxvt::RS_Italic, urxvt::RS_Blink,
756       urxvt::RS_RVid, urxvt::RS_Uline
757           Return the bit that enabled bold, italic, blink, reverse-video and
758           underline, respectively. To enable such a style, just logically OR
759           it into the bitset.
760
761       $foreground = urxvt::GET_BASEFG $rend
762       $background = urxvt::GET_BASEBG $rend
763           Return the foreground/background colour index, respectively.
764
765       $rend = urxvt::SET_FGCOLOR $rend, $new_colour
766       $rend = urxvt::SET_BGCOLOR $rend, $new_colour
767       $rend = urxvt::SET_COLOR $rend, $new_fg, $new_bg
768           Replace the foreground/background colour in the rendition mask with
769           the specified one.
770
771       $value = urxvt::GET_CUSTOM $rend
772           Return the "custom" value: Every rendition has 5 bits for use by
773           extensions. They can be set and changed as you like and are
774           initially zero.
775
776       $rend = urxvt::SET_CUSTOM $rend, $new_value
777           Change the custom value.
778
779   The "urxvt::anyevent" Class
780       The sole purpose of this class is to deliver an interface to the
781       "AnyEvent" module - any module using it will work inside urxvt without
782       further programming. The only exception is that you cannot wait on
783       condition variables, but non-blocking condvar use is ok. What this
784       means is that you cannot use blocking APIs, but the non-blocking
785       variant should work.
786
787   The "urxvt::term" Class
788       $term = new urxvt::term $envhashref, $rxvtname, [arg...]
789           Creates a new terminal, very similar as if you had started it with
790           system "$rxvtname, arg...". $envhashref must be a reference to a
791           %ENV-like hash which defines the environment of the new terminal.
792
793           Croaks (and probably outputs an error message) if the new instance
794           couldn't be created.  Returns "undef" if the new instance didn't
795           initialise perl, and the terminal object otherwise. The "init" and
796           "start" hooks will be called before this call returns, and are free
797           to refer to global data (which is race free).
798
799       $term->destroy
800           Destroy the terminal object (close the window, free resources
801           etc.). Please note that urxvt256c will not exit as long as any
802           event watchers (timers, io watchers) are still active.
803
804       $term->exec_async ($cmd[, @args])
805           Works like the combination of the "fork"/"exec" builtins, which
806           executes ("starts") programs in the background. This function takes
807           care of setting the user environment before exec'ing the command
808           (e.g. "PATH") and should be preferred over explicit calls to "exec"
809           or "system".
810
811           Returns the pid of the subprocess or "undef" on error.
812
813       $isset = $term->option ($optval[, $set])
814           Returns true if the option specified by $optval is enabled, and
815           optionally change it. All option values are stored by name in the
816           hash %urxvt::OPTION. Options not enabled in this binary are not in
817           the hash.
818
819           Here is a likely non-exhaustive list of option names, please see
820           the source file /src/optinc.h to see the actual list:
821
822            borderLess console cursorBlink cursorUnderline hold iconic insecure
823            intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
824            override-redirect pastableTabs pointerBlank reverseVideo scrollBar
825            scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput
826            scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs
827            transparent tripleclickwords utmpInhibit visualBell
828
829       $value = $term->resource ($name[, $newval])
830           Returns the current resource value associated with a given name and
831           optionally sets a new value. Setting values is most useful in the
832           "init" hook. Unset resources are returned and accepted as "undef".
833
834           The new value must be properly encoded to a suitable character
835           encoding before passing it to this method. Similarly, the returned
836           value may need to be converted from the used encoding to text.
837
838           Resource names are as defined in src/rsinc.h. Colours can be
839           specified as resource names of the form "color+<index>", e.g.
840           "color+5". (will likely change).
841
842           Please note that resource strings will currently only be freed when
843           the terminal is destroyed, so changing options frequently will eat
844           memory.
845
846           Here is a likely non-exhaustive list of resource names, not all of
847           which are supported in every build, please see the source file
848           /src/rsinc.h to see the actual list:
849
850             answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
851             borderLess chdir color cursorBlink cursorUnderline cutchars delete_key
852             display_name embed ext_bwidth fade font geometry hold iconName
853             imFont imLocale inputMethod insecure int_bwidth intensityStyles
854             italicFont jumpScroll lineSpace letterSpace loginShell mapAlert meta8
855             modifier mouseWheelScrollPage name override_redirect pastableTabs path
856             perl_eval perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay
857             preeditType print_pipe pty_fd reverseVideo saveLines scrollBar
858             scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness
859             scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle
860             secondaryScreen secondaryScroll shade term_name title
861             transient_for transparent transparent_all tripleclickwords utmpInhibit
862             visualBell
863
864       $value = $term->x_resource ($pattern)
865           Returns the X-Resource for the given pattern, excluding the program
866           or class name, i.e.  "$term->x_resource ("boldFont")" should return
867           the same value as used by this instance of rxvt-unicode. Returns
868           "undef" if no resource with that pattern exists.
869
870           This method should only be called during the "on_start" hook, as
871           there is only one resource database per display, and later
872           invocations might return the wrong resources.
873
874       $success = $term->parse_keysym ($keysym_spec, $command_string)
875           Adds a keymap translation exactly as specified via a resource. See
876           the "keysym" resource in the urxvt256c(1) manpage.
877
878       $rend = $term->rstyle ([$new_rstyle])
879           Return and optionally change the current rendition. Text that is
880           output by the terminal application will use this style.
881
882       ($row, $col) = $term->screen_cur ([$row, $col])
883           Return the current coordinates of the text cursor position and
884           optionally set it (which is usually bad as applications don't
885           expect that).
886
887       ($row, $col) = $term->selection_mark ([$row, $col])
888       ($row, $col) = $term->selection_beg ([$row, $col])
889       ($row, $col) = $term->selection_end ([$row, $col])
890           Return the current values of the selection mark, begin or end
891           positions.
892
893           When arguments are given, then the selection coordinates are set to
894           $row and $col, and the selection screen is set to the current
895           screen.
896
897       $screen = $term->selection_screen ([$screen])
898           Returns the current selection screen, and then optionally sets it.
899
900       $term->selection_make ($eventtime[, $rectangular])
901           Tries to make a selection as set by "selection_beg" and
902           "selection_end". If $rectangular is true (default: false), a
903           rectangular selection will be made. This is the preferred function
904           to make a selection.
905
906       $success = $term->selection_grab ($eventtime[, $clipboard])
907           Try to acquire ownership of the primary (clipboard if $clipboard is
908           true) selection from the server. The corresponding text can be set
909           with the next method. No visual feedback will be given. This
910           function is mostly useful from within "on_sel_grab" hooks.
911
912       $oldtext = $term->selection ([$newtext, $clipboard])
913           Return the current selection (clipboard if $clipboard is true) text
914           and optionally replace it by $newtext.
915
916       $term->selection_clear ([$clipboard])
917           Revoke ownership of the primary (clipboard if $clipboard is true)
918           selection.
919
920       $term->overlay_simple ($x, $y, $text)
921           Create a simple multi-line overlay box. See the next method for
922           details.
923
924       $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
925           Create a new (empty) overlay at the given position with the given
926           width/height. $rstyle defines the initial rendition style (default:
927           "OVERLAY_RSTYLE").
928
929           If $border is 2 (default), then a decorative border will be put
930           around the box.
931
932           If either $x or $y is negative, then this is counted from the
933           right/bottom side, respectively.
934
935           This method returns an urxvt::overlay object. The overlay will be
936           visible as long as the perl object is referenced.
937
938           The methods currently supported on "urxvt::overlay" objects are:
939
940           $overlay->set ($x, $y, $text[, $rend])
941               Similar to "$term->ROW_t" and "$term->ROW_r" in that it puts
942               text in rxvt-unicode's special encoding and an array of
943               rendition values at a specific position inside the overlay.
944
945               If $rend is missing, then the rendition will not be changed.
946
947           $overlay->hide
948               If visible, hide the overlay, but do not destroy it.
949
950           $overlay->show
951               If hidden, display the overlay again.
952
953       $popup = $term->popup ($event)
954           Creates a new "urxvt::popup" object that implements a popup menu.
955           The $event must be the event causing the menu to pop up (a button
956           event, currently).
957
958       $cellwidth = $term->strwidth ($string)
959           Returns the number of screen-cells this string would need.
960           Correctly accounts for wide and combining characters.
961
962       $octets = $term->locale_encode ($string)
963           Convert the given text string into the corresponding locale
964           encoding.
965
966       $string = $term->locale_decode ($octets)
967           Convert the given locale-encoded octets into a perl string.
968
969       $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
970           XORs the rendition values in the given span with the provided value
971           (default: "RS_RVid"), which MUST NOT contain font styles. Useful in
972           refresh hooks to provide effects similar to the selection.
973
974       $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[,
975       $rstyle1[, $rstyle2]])
976           Similar to "scr_xor_span", but xors a rectangle instead. Trailing
977           whitespace will additionally be xored with the $rstyle2, which
978           defaults to "RS_RVid | RS_Uline", which removes reverse video again
979           and underlines it instead. Both styles MUST NOT contain font
980           styles.
981
982       $term->scr_bell
983           Ring the bell!
984
985       $term->scr_add_lines ($string)
986           Write the given text string to the screen, as if output by the
987           application running inside the terminal. It may not contain command
988           sequences (escape codes), but is free to use line feeds, carriage
989           returns and tabs. The string is a normal text string, not in
990           locale-dependent encoding.
991
992           Normally its not a good idea to use this function, as programs
993           might be confused by changes in cursor position or scrolling. Its
994           useful inside a "on_add_lines" hook, though.
995
996       $term->scr_change_screen ($screen)
997           Switch to given screen - 0 primary, 1 secondary.
998
999       $term->cmd_parse ($octets)
1000           Similar to "scr_add_lines", but the argument must be in the locale-
1001           specific encoding of the terminal and can contain command sequences
1002           (escape codes) that will be interpreted.
1003
1004       $term->tt_write ($octets)
1005           Write the octets given in $octets to the tty (i.e. as program
1006           input). To pass characters instead of octets, you should convert
1007           your strings first to the locale-specific encoding using
1008           "$term->locale_encode".
1009
1010       $term->tt_paste ($octets)
1011           Write the octets given in $octets to the tty as a paste, converting
1012           NL to CR and bracketing the data with control sequences if
1013           bracketed paste mode is set.
1014
1015       $old_events = $term->pty_ev_events ([$new_events])
1016           Replaces the event mask of the pty watcher by the given event mask.
1017           Can be used to suppress input and output handling to the pty/tty.
1018           See the description of "urxvt::timer->events". Make sure to always
1019           restore the previous value.
1020
1021       $fd = $term->pty_fd
1022           Returns the master file descriptor for the pty in use, or "-1" if
1023           no pty is used.
1024
1025       $windowid = $term->parent
1026           Return the window id of the toplevel window.
1027
1028       $windowid = $term->vt
1029           Return the window id of the terminal window.
1030
1031       $term->vt_emask_add ($x_event_mask)
1032           Adds the specified events to the vt event mask. Useful e.g. when
1033           you want to receive pointer events all the times:
1034
1035              $term->vt_emask_add (urxvt::PointerMotionMask);
1036
1037       $term->focus_in
1038       $term->focus_out
1039       $term->key_press ($state, $keycode[, $time])
1040       $term->key_release ($state, $keycode[, $time])
1041           Deliver various fake events to to terminal.
1042
1043       $window_width = $term->width
1044       $window_height = $term->height
1045       $font_width = $term->fwidth
1046       $font_height = $term->fheight
1047       $font_ascent = $term->fbase
1048       $terminal_rows = $term->nrow
1049       $terminal_columns = $term->ncol
1050       $has_focus = $term->focus
1051       $is_mapped = $term->mapped
1052       $max_scrollback = $term->saveLines
1053       $nrow_plus_saveLines = $term->total_rows
1054       $topmost_scrollback_row = $term->top_row
1055           Return various integers describing terminal characteristics.
1056
1057       $x_display = $term->display_id
1058           Return the DISPLAY used by rxvt-unicode.
1059
1060       $lc_ctype = $term->locale
1061           Returns the LC_CTYPE category string used by this rxvt-unicode.
1062
1063       $env = $term->env
1064           Returns a copy of the environment in effect for the terminal as a
1065           hashref similar to "\%ENV".
1066
1067       @envv = $term->envv
1068           Returns the environment as array of strings of the form
1069           "VAR=VALUE".
1070
1071       @argv = $term->argv
1072           Return the argument vector as this terminal, similar to @ARGV, but
1073           includes the program name as first element.
1074
1075       $modifiermask = $term->ModLevel3Mask
1076       $modifiermask = $term->ModMetaMask
1077       $modifiermask = $term->ModNumLockMask
1078           Return the modifier masks corresponding to the "ISO Level 3 Shift"
1079           (often AltGr), the meta key (often Alt) and the num lock key, if
1080           applicable.
1081
1082       $screen = $term->current_screen
1083           Returns the currently displayed screen (0 primary, 1 secondary).
1084
1085       $cursor_is_hidden = $term->hidden_cursor
1086           Returns whether the cursor is currently hidden or not.
1087
1088       $view_start = $term->view_start ([$newvalue])
1089           Returns the row number of the topmost displayed line. Maximum value
1090           is 0, which displays the normal terminal contents. Lower values
1091           scroll this many lines into the scrollback buffer.
1092
1093       $term->want_refresh
1094           Requests a screen refresh. At the next opportunity, rxvt-unicode
1095           will compare the on-screen display with its stored representation.
1096           If they differ, it redraws the differences.
1097
1098           Used after changing terminal contents to display them.
1099
1100       $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
1101           Returns the text of the entire row with number $row_number. Row
1102           "$term->top_row" is the topmost terminal line, row "$term->nrow-1"
1103           is the bottommost terminal line. Nothing will be returned if a
1104           nonexistent line is requested.
1105
1106           If $new_text is specified, it will replace characters in the
1107           current line, starting at column $start_col (default 0), which is
1108           useful to replace only parts of a line. The font index in the
1109           rendition will automatically be updated.
1110
1111           $text is in a special encoding: tabs and wide characters that use
1112           more than one cell when displayed are padded with $urxvt::NOCHAR
1113           (chr 65535) characters. Characters with combining characters and
1114           other characters that do not fit into the normal text encoding will
1115           be replaced with characters in the private use area.
1116
1117           You have to obey this encoding when changing text. The advantage is
1118           that "substr" and similar functions work on screen cells and not on
1119           characters.
1120
1121           The methods "$term->special_encode" and "$term->special_decode" can
1122           be used to convert normal strings into this encoding and vice
1123           versa.
1124
1125       $rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])
1126           Like "$term->ROW_t", but returns an arrayref with rendition
1127           bitsets. Rendition bitsets contain information about colour, font,
1128           font styles and similar information. See also "$term->ROW_t".
1129
1130           When setting rendition, the font mask will be ignored.
1131
1132           See the section on RENDITION, above.
1133
1134       $length = $term->ROW_l ($row_number[, $new_length])
1135           Returns the number of screen cells that are in use ("the line
1136           length"). Unlike the urxvt core, this returns "$term->ncol" if the
1137           line is joined with the following one.
1138
1139       $bool = $term->is_longer ($row_number)
1140           Returns true if the row is part of a multiple-row logical "line"
1141           (i.e.  joined with the following row), which means all characters
1142           are in use and it is continued on the next row (and possibly a
1143           continuation of the previous row(s)).
1144
1145       $line = $term->line ($row_number)
1146           Create and return a new "urxvt::line" object that stores
1147           information about the logical line that row $row_number is part of.
1148           It supports the following methods:
1149
1150           $text = $line->t ([$new_text])
1151               Returns or replaces the full text of the line, similar to
1152               "ROW_t"
1153
1154           $rend = $line->r ([$new_rend])
1155               Returns or replaces the full rendition array of the line,
1156               similar to "ROW_r"
1157
1158           $length = $line->l
1159               Returns the length of the line in cells, similar to "ROW_l".
1160
1161           $rownum = $line->beg
1162           $rownum = $line->end
1163               Return the row number of the first/last row of the line,
1164               respectively.
1165
1166           $offset = $line->offset_of ($row, $col)
1167               Returns the character offset of the given row|col pair within
1168               the logical line. Works for rows outside the line, too, and
1169               returns corresponding offsets outside the string.
1170
1171           ($row, $col) = $line->coord_of ($offset)
1172               Translates a string offset into terminal coordinates again.
1173
1174       $text = $term->special_encode $string
1175           Converts a perl string into the special encoding used by rxvt-
1176           unicode, where one character corresponds to one screen cell. See
1177           "$term->ROW_t" for details.
1178
1179       $string = $term->special_decode $text
1180           Converts rxvt-unicodes text representation into a perl string. See
1181           "$term->ROW_t" for details.
1182
1183       $success = $term->grab_button ($button, $modifiermask[, $window =
1184       $term->vt])
1185       $term->ungrab_button ($button, $modifiermask[, $window = $term->vt])
1186           Register/unregister a synchronous button grab. See the XGrabButton
1187           manpage.
1188
1189       $success = $term->grab ($eventtime[, $sync])
1190           Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1191           synchronous ($sync is true). Also remembers the grab timestamp.
1192
1193       $term->allow_events_async
1194           Calls XAllowEvents with AsyncBoth for the most recent grab.
1195
1196       $term->allow_events_sync
1197           Calls XAllowEvents with SyncBoth for the most recent grab.
1198
1199       $term->allow_events_replay
1200           Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for
1201           the most recent grab.
1202
1203       $term->ungrab
1204           Calls XUngrabPointer and XUngrabKeyboard for the most recent grab.
1205           Is called automatically on evaluation errors, as it is better to
1206           lose the grab in the error case as the session.
1207
1208       $atom = $term->XInternAtom ($atom_name[, $only_if_exists])
1209       $atom_name = $term->XGetAtomName ($atom)
1210       @atoms = $term->XListProperties ($window)
1211       ($type,$format,$octets) = $term->XGetWindowProperty ($window,
1212       $property)
1213       $term->XChangeProperty ($window, $property, $type, $format, $octets)
1214       $term->XDeleteProperty ($window, $property)
1215       $window = $term->DefaultRootWindow
1216       $term->XReparentWindow ($window, $parent, [$x, $y])
1217       $term->XMapWindow ($window)
1218       $term->XUnmapWindow ($window)
1219       $term->XMoveResizeWindow ($window, $x, $y, $width, $height)
1220       ($x, $y, $child_window) = $term->XTranslateCoordinates ($src, $dst, $x,
1221       $y)
1222       $term->XChangeInput ($window, $add_events[, $del_events])
1223           Various X or X-related functions. The $term object only serves as
1224           the source of the display, otherwise those functions map more-or-
1225           less directly onto the X functions of the same name.
1226
1227   The "urxvt::popup" Class
1228       $popup->add_title ($title)
1229           Adds a non-clickable title to the popup.
1230
1231       $popup->add_separator ([$sepchr])
1232           Creates a separator, optionally using the character given as
1233           $sepchr.
1234
1235       $popup->add_button ($text, $cb)
1236           Adds a clickable button to the popup. $cb is called whenever it is
1237           selected.
1238
1239       $popup->add_toggle ($text, $initial_value, $cb)
1240           Adds a toggle/checkbox item to the popup. The callback gets called
1241           whenever it gets toggled, with a boolean indicating its new value
1242           as its first argument.
1243
1244       $popup->show
1245           Displays the popup (which is initially hidden).
1246
1247   The "urxvt::timer" Class
1248       This class implements timer watchers/events. Time is represented as a
1249       fractional number of seconds since the epoch. Example:
1250
1251          $term->{overlay} = $term->overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
1252          $term->{timer} = urxvt::timer
1253                           ->new
1254                           ->interval (1)
1255                           ->cb (sub {
1256                              $term->{overlay}->set (0, 0,
1257                                 sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
1258                           });
1259
1260       $timer = new urxvt::timer
1261           Create a new timer object in started state. It is scheduled to fire
1262           immediately.
1263
1264       $timer = $timer->cb (sub { my ($timer) = @_; ... })
1265           Set the callback to be called when the timer triggers.
1266
1267       $timer = $timer->set ($tstamp[, $interval])
1268           Set the time the event is generated to $tstamp (and optionally
1269           specifies a new $interval).
1270
1271       $timer = $timer->interval ($interval)
1272           By default (and when $interval is 0), the timer will automatically
1273           stop after it has fired once. If $interval is non-zero, then the
1274           timer is automatically rescheduled at the given intervals.
1275
1276       $timer = $timer->start
1277           Start the timer.
1278
1279       $timer = $timer->start ($tstamp[, $interval])
1280           Set the event trigger time to $tstamp and start the timer.
1281           Optionally also replaces the interval.
1282
1283       $timer = $timer->after ($delay[, $interval])
1284           Like "start", but sets the expiry timer to c<urxvt::NOW + $delay>.
1285
1286       $timer = $timer->stop
1287           Stop the timer.
1288
1289   The "urxvt::iow" Class
1290       This class implements io watchers/events. Example:
1291
1292         $term->{socket} = ...
1293         $term->{iow} = urxvt::iow
1294                        ->new
1295                        ->fd (fileno $term->{socket})
1296                        ->events (urxvt::EV_READ)
1297                        ->start
1298                        ->cb (sub {
1299                          my ($iow, $revents) = @_;
1300                          # $revents must be 1 here, no need to check
1301                          sysread $term->{socket}, my $buf, 8192
1302                             or end-of-file;
1303                        });
1304
1305       $iow = new urxvt::iow
1306           Create a new io watcher object in stopped state.
1307
1308       $iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })
1309           Set the callback to be called when io events are triggered.
1310           $reventmask is a bitset as described in the "events" method.
1311
1312       $iow = $iow->fd ($fd)
1313           Set the file descriptor (not handle) to watch.
1314
1315       $iow = $iow->events ($eventmask)
1316           Set the event mask to watch. The only allowed values are
1317           "urxvt::EV_READ" and "urxvt::EV_WRITE", which might be ORed
1318           together, or "urxvt::EV_NONE".
1319
1320       $iow = $iow->start
1321           Start watching for requested events on the given handle.
1322
1323       $iow = $iow->stop
1324           Stop watching for events on the given file handle.
1325
1326   The "urxvt::iw" Class
1327       This class implements idle watchers, that get called automatically when
1328       the process is idle. They should return as fast as possible, after
1329       doing some useful work.
1330
1331       $iw = new urxvt::iw
1332           Create a new idle watcher object in stopped state.
1333
1334       $iw = $iw->cb (sub { my ($iw) = @_; ... })
1335           Set the callback to be called when the watcher triggers.
1336
1337       $timer = $timer->start
1338           Start the watcher.
1339
1340       $timer = $timer->stop
1341           Stop the watcher.
1342
1343   The "urxvt::pw" Class
1344       This class implements process watchers. They create an event whenever a
1345       process exits, after which they stop automatically.
1346
1347          my $pid = fork;
1348          ...
1349          $term->{pw} = urxvt::pw
1350                           ->new
1351                           ->start ($pid)
1352                           ->cb (sub {
1353                              my ($pw, $exit_status) = @_;
1354                              ...
1355                           });
1356
1357       $pw = new urxvt::pw
1358           Create a new process watcher in stopped state.
1359
1360       $pw = $pw->cb (sub { my ($pw, $exit_status) = @_; ... })
1361           Set the callback to be called when the timer triggers.
1362
1363       $pw = $timer->start ($pid)
1364           Tells the watcher to start watching for process $pid.
1365
1366       $pw = $pw->stop
1367           Stop the watcher.
1368

ENVIRONMENT

1370   URXVT_PERL_VERBOSITY
1371       This variable controls the verbosity level of the perl extension.
1372       Higher numbers indicate more verbose output.
1373
1374       == 0 - fatal messages
1375       >= 3 - script loading and management
1376       >=10 - all called hooks
1377       >=11 - hook return values
1378

AUTHOR

1380        Marc Lehmann <schmorp@schmorp.de>
1381        http://software.schmorp.de/pkg/rxvt-unicode
1382
1383
1384
13859.12                              2011-06-29                      urxvt256c(3)
Impressum