ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.51
Committed: Wed Aug 1 18:38:16 2007 UTC (16 years, 10 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-8_3
Changes since 1.50: +2 -1 lines
Log Message:
fix lots of configure bugs

File Contents

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