ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.man.in
Revision: 1.26
Committed: Thu Jan 12 12:10:06 2006 UTC (18 years, 6 months ago) by root
Branch: MAIN
Changes since 1.25: +54 -4 lines
Log Message:
*** empty log message ***

File Contents

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