ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.html
Revision: 1.38
Committed: Wed Jan 25 00:57:57 2006 UTC (18 years, 5 months ago) by root
Content type: text/html
Branch: MAIN
Changes since 1.37: +29 -3 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2     <html xmlns="http://www.w3.org/1999/xhtml">
3     <head>
4 root 1.30 <title>rxvtperl - rxvt-unicode's embedded perl interpreter</title>
5 root 1.1 <link rev="made" href="mailto:perl-binary@plan9.de" />
6     </head>
7    
8     <body style="background-color: white">
9    
10     <p><a name="__index__"></a></p>
11     <!-- INDEX BEGIN -->
12    
13     <ul>
14    
15     <li><a href="#name">NAME</a></li>
16     <li><a href="#synopsis">SYNOPSIS</a></li>
17     <li><a href="#description">DESCRIPTION</a></li>
18 root 1.20 <li><a href="#prepackaged_extensions">PREPACKAGED EXTENSIONS</a></li>
19     <li><a href="#api_documentation">API DOCUMENTATION</a></li>
20 root 1.1 <ul>
21    
22 root 1.3 <li><a href="#general_api_considerations">General API Considerations</a></li>
23 root 1.19 <li><a href="#extension_objects">Extension Objects</a></li>
24 root 1.1 <li><a href="#hooks">Hooks</a></li>
25 root 1.9 <li><a href="#variables_in_the_urxvt_package">Variables in the <code>urxvt</code> Package</a></li>
26 root 1.1 <li><a href="#functions_in_the_urxvt_package">Functions in the <code>urxvt</code> Package</a></li>
27 root 1.8 <li><a href="#rendition">RENDITION</a></li>
28 root 1.16 <li><a href="#the_urxvt__anyevent_class">The <code>urxvt::anyevent</code> Class</a></li>
29 root 1.1 <li><a href="#the_urxvt__term_class">The <code>urxvt::term</code> Class</a></li>
30 root 1.15 <li><a href="#the_urxvt__popup_class">The <code>urxvt::popup</code> Class</a></li>
31 root 1.1 <li><a href="#the_urxvt__timer_class">The <code>urxvt::timer</code> Class</a></li>
32     <li><a href="#the_urxvt__iow_class">The <code>urxvt::iow</code> Class</a></li>
33 root 1.34 <li><a href="#the_urxvt__iw_class">The <code>urxvt::iw</code> Class</a></li>
34     <li><a href="#the_urxvt__pw_class">The <code>urxvt::pw</code> Class</a></li>
35 root 1.1 </ul>
36    
37 root 1.2 <li><a href="#environment">ENVIRONMENT</a></li>
38     <ul>
39    
40     <li><a href="#urxvt_perl_verbosity">URXVT_PERL_VERBOSITY</a></li>
41     </ul>
42    
43 root 1.1 <li><a href="#author">AUTHOR</a></li>
44     </ul>
45     <!-- INDEX END -->
46    
47     <hr />
48     <p>
49     </p>
50 root 1.7 <hr />
51 root 1.1 <h1><a name="name">NAME</a></h1>
52 root 1.30 <p>rxvtperl - rxvt-unicode's embedded perl interpreter</p>
53 root 1.1 <p>
54     </p>
55     <hr />
56     <h1><a name="synopsis">SYNOPSIS</a></h1>
57 root 1.5 <pre>
58     # create a file grab_test in $HOME:</pre>
59 root 1.1 <pre>
60     sub on_sel_grab {
61     warn &quot;you selected &quot;, $_[0]-&gt;selection;
62     ()
63     }</pre>
64     <pre>
65 root 1.30 # start a rxvt using it:</pre>
66 root 1.5 <pre>
67 root 1.30 rxvt --perl-lib $HOME -pe grab_test</pre>
68 root 1.1 <p>
69     </p>
70     <hr />
71     <h1><a name="description">DESCRIPTION</a></h1>
72 root 1.15 <p>Everytime a terminal object gets created, extension scripts specified via
73     the <code>perl</code> resource are loaded and associated with it.</p>
74 root 1.5 <p>Scripts are compiled in a 'use strict' and 'use utf8' environment, and
75     thus must be encoded as UTF-8.</p>
76 root 1.30 <p>Each script will only ever be loaded once, even in rxvtd, where
77 root 1.7 scripts will be shared (but not enabled) for all terminals.</p>
78 root 1.3 <p>
79     </p>
80 root 1.20 <hr />
81     <h1><a name="prepackaged_extensions">PREPACKAGED EXTENSIONS</a></h1>
82     <p>This section describes the extensions delivered with this release. You can
83 root 1.30 find them in <em>/opt/rxvt/lib/urxvt/perl/</em>.</p>
84 root 1.6 <p>You can activate them like this:</p>
85     <pre>
86 root 1.30 rxvt -pe &lt;extensionname&gt;</pre>
87 root 1.34 <p>Or by adding them to the resource for extensions loaded by default:</p>
88     <pre>
89     URxvt.perl-ext-common: default,automove-background,selection-autotransform</pre>
90 root 1.6 <dl>
91 root 1.16 <dt><strong><a name="item_selection">selection (enabled by default)</a></strong><br />
92 root 1.6 </dt>
93     <dd>
94 root 1.20 (More) intelligent selection. This extension tries to be more intelligent
95 root 1.25 when the user extends selections (double-click and further clicks). Right
96     now, it tries to select words, urls and complete shell-quoted
97     arguments, which is very convenient, too, if your <em>ls</em> supports
98     <code>--quoting-style=shell</code>.
99     </dd>
100     <dd>
101     <p>A double-click usually selects the word under the cursor, further clicks
102     will enlarge the selection.</p>
103 root 1.9 </dd>
104     <dd>
105 root 1.26 <p>The selection works by trying to match a number of regexes and displaying
106     them in increasing order of length. You can add your own regexes by
107     specifying resources of the form:</p>
108     </dd>
109     <dd>
110     <pre>
111     URxvt.selection.pattern-0: perl-regex
112     URxvt.selection.pattern-1: perl-regex
113     ...</pre>
114     </dd>
115     <dd>
116     <p>The index number (0, 1...) must not have any holes, and each regex must
117     contain at least one pair of capturing parentheses, which will be used for
118     the match. For example, the followign adds a regex that matches everything
119     between two vertical bars:</p>
120     </dd>
121     <dd>
122     <pre>
123     URxvt.selection.pattern-0: \\|([^|]+)\\|</pre>
124     </dd>
125     <dd>
126 root 1.38 <p>Another example: Programs I use often output ``absolute path: '' at the
127     beginning of a line when they process multiple files. The following
128     pattern matches the filename (note, there is a single space at the very
129     end):</p>
130     </dd>
131     <dd>
132     <pre>
133     URxvt.selection.pattern-0: ^(/[^:]+):\</pre>
134     </dd>
135     <dd>
136 root 1.26 <p>You can look at the source of the selection extension to see more
137     interesting uses, such as parsing a line from beginning to end.</p>
138     </dd>
139     <dd>
140 root 1.31 <p>This extension also offers following bindable keyboard commands:</p>
141 root 1.6 </dd>
142     <dl>
143     <dt><strong><a name="item_rot13">rot13</a></strong><br />
144     </dt>
145     <dd>
146     Rot-13 the selection when activated. Used via keyboard trigger:
147     </dd>
148     <dd>
149     <pre>
150     URxvt.keysym.C-M-r: perl:selection:rot13</pre>
151     </dd>
152     <p></p></dl>
153 root 1.16 <dt><strong><a name="item_popup">option-popup (enabled by default)</a></strong><br />
154     </dt>
155     <dd>
156 root 1.17 Binds a popup menu to Ctrl-Button2 that lets you toggle (some) options at
157 root 1.16 runtime.
158     </dd>
159     <p></p>
160 root 1.17 <dt><strong>selection-popup (enabled by default)</strong><br />
161     </dt>
162     <dd>
163     Binds a popup menu to Ctrl-Button3 that lets you convert the selection
164 root 1.20 text into various other formats/action (such as uri unescaping, perl
165 root 1.35 evaluation, web-browser starting etc.), depending on content.
166 root 1.17 </dd>
167 root 1.33 <dd>
168     <p>Other extensions can extend this popup menu by pushing a code reference
169     onto <code>@{ $term-</code>{selection_popup_hook} }&gt;, that is called whenever the
170     popup is displayed.</p>
171     </dd>
172     <dd>
173     <p>It's sole argument is the popup menu, which can be modified. The selection
174     is in <code>$_</code>, which can be used to decide wether to add something or not.
175     It should either return nothing or a string and a code reference. The
176     string will be used as button text and the code reference will be called
177     when the button gets activated and should transform <code>$_</code>.</p>
178     </dd>
179     <dd>
180     <p>The following will add an entry <code>a to b</code> that transforms all <code>a</code>s in
181     the selection to <code>b</code>s, but only if the selection currently contains any
182     <code>a</code>s:</p>
183     </dd>
184     <dd>
185     <pre>
186     push @{ $self-&gt;{term}{selection_popup_hook} }, sub {
187     /a/ ? (&quot;a to be&quot; =&gt; sub { s/a/b/g }
188     : ()
189     };</pre>
190     </dd>
191 root 1.17 <p></p>
192 root 1.19 <dt><strong><a name="item_searchable_2dscrollback_3chotkey_3e__28enabled_by_">searchable-scrollback&lt;hotkey&gt; (enabled by default)</a></strong><br />
193     </dt>
194     <dd>
195     Adds regex search functionality to the scrollback buffer, triggered
196 root 1.25 by a hotkey (default: <code>M-s</code>). While in search mode, normal terminal
197     input/output is suspended and a regex is displayed at the bottom of the
198     screen.
199 root 1.19 </dd>
200     <dd>
201 root 1.25 <p>Inputting characters appends them to the regex and continues incremental
202     search. <code>BackSpace</code> removes a character from the regex, <code>Up</code> and <code>Down</code>
203     search upwards/downwards in the scrollback buffer, <code>End</code> jumps to the
204     bottom. <code>Escape</code> leaves search mode and returns to the point where search
205     was started, while <code>Enter</code> or <code>Return</code> stay at the current position and
206     additionally stores the first match in the current line into the primary
207     selection.</p>
208 root 1.19 </dd>
209     <p></p>
210 root 1.36 <dt><strong><a name="item_readline">readline (enabled by default)</a></strong><br />
211     </dt>
212     <dd>
213     A support package that tries to make editing with readline easier. At the
214     moment, it reacts to clicking with the left mouse button by trying to
215     move the text cursor to this position. It does so by generating as many
216     cursor-left or cursor-right keypresses as required (the this only works
217     for programs that correctly support wide characters).
218     </dd>
219     <dd>
220     <p>To avoid too many false positives, this is only done when:</p>
221     </dd>
222     <dl>
223 root 1.37 <dt><strong><a name="item__2d_the_tty_is_in_icanon_state_2e">- the tty is in ICANON state.</a></strong><br />
224     </dt>
225     <dt><strong><a name="item__2d_the_text_cursor_is_visible_2e">- the text cursor is visible.</a></strong><br />
226 root 1.36 </dt>
227     <dt><strong><a name="item__2d_the_primary_screen_is_currently_being_displaye">- the primary screen is currently being displayed.</a></strong><br />
228     </dt>
229 root 1.37 <dt><strong><a name="item_same">- the mouse is on the same (multi-row-) line as the text cursor.</a></strong><br />
230 root 1.36 </dt>
231     </dl>
232     <p>The normal selection mechanism isn't disabled, so quick successive clicks
233     might interfere with selection creation in harmless ways.</p>
234 root 1.26 <dt><strong><a name="item_selection_2dautotransform">selection-autotransform</a></strong><br />
235 root 1.6 </dt>
236     <dd>
237 root 1.26 This selection allows you to do automatic transforms on a selection
238     whenever a selection is made.
239     </dd>
240     <dd>
241     <p>It works by specifying perl snippets (most useful is a single <code>s///</code>
242     operator) that modify <code>$_</code> as resources:</p>
243     </dd>
244     <dd>
245     <pre>
246     URxvt.selection-autotransform.0: transform
247     URxvt.selection-autotransform.1: transform
248     ...</pre>
249     </dd>
250     <dd>
251     <p>For example, the following will transform selections of the form
252     <code>filename:number</code>, often seen in compiler messages, into <code>vi +$filename
253     $word</code>:</p>
254     </dd>
255     <dd>
256     <pre>
257 root 1.29 URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/vi +$2 \\Q$1\\E\\x0d/</pre>
258 root 1.26 </dd>
259     <dd>
260     <p>And this example matches the same,but replaces it with vi-commands you can
261     paste directly into your (vi :) editor:</p>
262     </dd>
263     <dd>
264     <pre>
265 root 1.33 URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/</pre>
266 root 1.6 </dd>
267 root 1.27 <dd>
268     <p>Of course, this can be modified to suit your needs and your editor :)</p>
269     </dd>
270 root 1.28 <dd>
271     <p>To expand the example above to typical perl error messages (``XXX at
272     FILENAME line YYY.''), you need a slightly more elaborate solution:</p>
273     </dd>
274     <dd>
275     <pre>
276 root 1.33 URxvt.selection.pattern-0: ( at .*? line \\d+[,.])
277     URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)[,.]$/:e \\Q$1\E\\x0d:$2\\x0d/</pre>
278 root 1.28 </dd>
279     <dd>
280     <p>The first line tells the selection code to treat the unchanging part of
281     every error message as a selection pattern, and the second line transforms
282     the message into vi commands to load the file.</p>
283     </dd>
284 root 1.6 <p></p>
285 root 1.34 <dt><strong><a name="item_tabbed">tabbed</a></strong><br />
286     </dt>
287     <dd>
288     This transforms the terminal into a tabbar with additional terminals, that
289     is, it implements what is commonly refered to as ``tabbed terminal''. The topmost line
290     displays a ``[NEW]'' button, which, when clicked, will add a new tab, followed by one
291     button per tab.
292     </dd>
293     <dd>
294 root 1.35 <p>Clicking a button will activate that tab. Pressing <strong>Shift-Left</strong> and
295     <strong>Shift-Right</strong> will switch to the tab left or right of the current one,
296     while <strong>Shift-Down</strong> creates a new tab.</p>
297 root 1.34 </dd>
298     <p></p>
299 root 1.14 <dt><strong><a name="item_mark_2durls">mark-urls</a></strong><br />
300     </dt>
301     <dd>
302 root 1.24 Uses per-line display filtering (<code>on_line_update</code>) to underline urls and
303 root 1.25 make them clickable. When middle-clicked, the program specified in the
304     resource <code>urlLauncher</code> (default <code>x-www-browser</code>) will be started with
305     the URL as first argument.
306 root 1.14 </dd>
307     <p></p>
308 root 1.38 <dt><strong><a name="item_xim_2donthespot">xim-onthespot</a></strong><br />
309     </dt>
310     <dd>
311     This (experimental) perl extension implements OnTheSpot editing. It does
312     not work perfectly, and some input methods don't seem to work well with
313     OnTheSpot editing in general, but it seems to work at leats for SCIM and
314     kinput2.
315     </dd>
316     <dd>
317     <p>You enable it by specifying this extension and a preedit style of
318     <code>OnTheSpot</code>, i.e.:</p>
319     </dd>
320     <dd>
321     <pre>
322     rxvt -pt OnTheSpot -pe xim-onthespot</pre>
323     </dd>
324     <p></p>
325 root 1.33 <dt><strong><a name="item_automove_2dbackground">automove-background</a></strong><br />
326     </dt>
327     <dd>
328     This is basically a one-line extension that dynamically changes the background pixmap offset
329     to the window position, in effect creating the same effect as pseudo transparency with
330     a custom pixmap. No scaling is supported in this mode. Exmaple:
331     </dd>
332     <dd>
333     <pre>
334     rxvt -pixmap background.xpm -pe automove-background</pre>
335     </dd>
336     <p></p>
337 root 1.14 <dt><strong><a name="item_block_2dgraphics_2dto_2dascii">block-graphics-to-ascii</a></strong><br />
338     </dt>
339     <dd>
340     A not very useful example of filtering all text output to the terminal,
341     by replacing all line-drawing characters (U+2500 .. U+259F) by a
342     similar-looking ascii character.
343     </dd>
344     <p></p>
345 root 1.26 <dt><strong><a name="item_digital_2dclock">digital-clock</a></strong><br />
346     </dt>
347     <dd>
348     Displays a digital clock using the built-in overlay.
349     </dd>
350     <p></p>
351 root 1.8 <dt><strong><a name="item_example_2drefresh_2dhooks">example-refresh-hooks</a></strong><br />
352 root 1.6 </dt>
353     <dd>
354 root 1.8 Displays a very simple digital clock in the upper right corner of the
355     window. Illustrates overwriting the refresh callbacks to create your own
356     overlays or changes.
357 root 1.6 </dd>
358 root 1.32 <p></p>
359     <dt><strong><a name="item_selection_2dpastebin">selection-pastebin</a></strong><br />
360     </dt>
361     <dd>
362     This is a little rarely useful extension that Uploads the selection as
363     textfile to a remote site (or does other things). (The implementation is
364     not currently secure for use in a multiuser environment as it writes to
365     <em>/tmp</em> directly.).
366     </dd>
367     <dd>
368     <p>It listens to the <code>selection-pastebin:remote-pastebin</code> keyboard command,
369     i.e.</p>
370     </dd>
371     <dd>
372     <pre>
373     URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin</pre>
374     </dd>
375     <dd>
376     <p>Pressing this combination runs a command with <code>%</code> replaced by the name of
377     the textfile. This command can be set via a resource:</p>
378     </dd>
379     <dd>
380     <pre>
381     URxvt.selection-pastebin.cmd: rsync -apP % ruth:/var/www/www.ta-sa.org/files/txt/.</pre>
382     </dd>
383     <dd>
384     <p>And the default is likely not useful to anybody but the few people around
385     here :)</p>
386     </dd>
387     <dd>
388     <p>The name of the textfile is the hex encoded md5 sum of the selection, so
389     the same content should lead to the same filename.</p>
390     </dd>
391     <dd>
392     <p>After a successful upload the selection will be replaced by the text given
393     in the <code>selection-pastebin-url</code> resource (again, the % is the placeholder
394     for the filename):</p>
395     </dd>
396     <dd>
397     <pre>
398     URxvt.selection-pastebin.url: <a href="http://www.ta-sa.org/files/txt/%">http://www.ta-sa.org/files/txt/%</a></pre>
399     </dd>
400 root 1.6 <p></p></dl>
401     <p>
402     </p>
403 root 1.20 <hr />
404     <h1><a name="api_documentation">API DOCUMENTATION</a></h1>
405     <p>
406     </p>
407 root 1.3 <h2><a name="general_api_considerations">General API Considerations</a></h2>
408     <p>All objects (such as terminals, time watchers etc.) are typical
409     reference-to-hash objects. The hash can be used to store anything you
410     like. All members starting with an underscore (such as <code>_ptr</code> or
411 root 1.9 <code>_hook</code>) are reserved for internal uses and <strong>MUST NOT</strong> be accessed or
412 root 1.3 modified).</p>
413     <p>When objects are destroyed on the C++ side, the perl object hashes are
414     emptied, so its best to store related objects such as time watchers and
415     the like inside the terminal object so they get destroyed as soon as the
416     terminal is destroyed.</p>
417 root 1.14 <p>Argument names also often indicate the type of a parameter. Here are some
418     hints on what they mean:</p>
419     <dl>
420     <dt><strong><a name="item__24text">$text</a></strong><br />
421     </dt>
422     <dd>
423     Rxvt-unicodes special way of encoding text, where one ``unicode'' character
424 root 1.23 always represents one screen cell. See <a href="#item_row_t">ROW_t</a> for a discussion of this format.
425 root 1.14 </dd>
426     <p></p>
427     <dt><strong><a name="item__24string">$string</a></strong><br />
428     </dt>
429     <dd>
430     A perl text string, with an emphasis on <em>text</em>. It can store all unicode
431     characters and is to be distinguished with text encoded in a specific
432     encoding (often locale-specific) and binary data.
433     </dd>
434     <p></p>
435     <dt><strong><a name="item__24octets">$octets</a></strong><br />
436     </dt>
437     <dd>
438     Either binary data or - more common - a text string encoded in a
439     locale-specific way.
440     </dd>
441     <p></p></dl>
442 root 1.1 <p>
443     </p>
444 root 1.19 <h2><a name="extension_objects">Extension Objects</a></h2>
445     <p>Very perl extension is a perl class. A separate perl object is created
446     for each terminal and each extension and passed as the first parameter to
447     hooks. So extensions can use their <code>$self</code> object without having to think
448     about other extensions, with the exception of methods and members that
449     begin with an underscore character <code>_</code>: these are reserved for internal
450     use.</p>
451     <p>Although it isn't a <code>urxvt::term</code> object, you can call all methods of the
452     <code>urxvt::term</code> class on this object.</p>
453     <p>It has the following methods and data members:</p>
454     <dl>
455     <dt><strong><a name="item__24urxvt_term__3d__24self_2d_3e_7bterm_7d">$urxvt_term = $self-&gt;{term}</a></strong><br />
456     </dt>
457     <dd>
458     Returns the <code>urxvt::term</code> object associated with this instance of the
459     extension. This member <em>must not</em> be changed in any way.
460     </dd>
461     <p></p>
462     <dt><strong><a name="item_enable">$self-&gt;enable ($hook_name =&gt; $cb, [$hook_name =&gt; $cb..])</a></strong><br />
463     </dt>
464     <dd>
465     Dynamically enable the given hooks (named without the <code>on_</code> prefix) for
466     this extension, replacing any previous hook. This is useful when you want
467     to overwrite time-critical hooks only temporarily.
468     </dd>
469     <p></p>
470     <dt><strong><a name="item_disable">$self-&gt;disable ($hook_name[, $hook_name..])</a></strong><br />
471     </dt>
472     <dd>
473     Dynamically disable the given hooks.
474     </dd>
475     <p></p></dl>
476     <p>
477     </p>
478 root 1.1 <h2><a name="hooks">Hooks</a></h2>
479 root 1.14 <p>The following subroutines can be declared in extension files, and will be
480 root 1.9 called whenever the relevant event happens.</p>
481 root 1.19 <p>The first argument passed to them is an extension oject as described in
482     the in the <code>Extension Objects</code> section.</p>
483 root 1.34 <p><strong>All</strong> of these hooks must return a boolean value. If any of the called
484     hooks returns true, then the event counts as being <em>consumed</em>, and the
485     relevant action might not be carried out by the C++ code.</p>
486 root 1.19 <p><em>When in doubt, return a false value (preferably <code>()</code>). </em>&gt;</p>
487 root 1.1 <dl>
488     <dt><strong><a name="item_on_init__24term">on_init $term</a></strong><br />
489     </dt>
490     <dd>
491     Called after a new terminal object has been initialized, but before
492 root 1.14 windows are created or the command gets run. Most methods are unsafe to
493     call or deliver senseless data, as terminal size and other characteristics
494 root 1.34 have not yet been determined. You can safely query and change resources
495     and options, though. For many purposes the <code>on_start</code> hook is a better
496     place.
497     </dd>
498     <p></p>
499     <dt><strong><a name="item_on_start__24term">on_start $term</a></strong><br />
500     </dt>
501     <dd>
502     Called at the very end of initialisation of a new terminal, just before
503     trying to map (display) the toplevel and returning to the mainloop.
504     </dd>
505     <p></p>
506     <dt><strong><a name="item_on_destroy__24term">on_destroy $term</a></strong><br />
507     </dt>
508     <dd>
509 root 1.38 Called whenever something tries to destroy terminal, when the terminal is
510     still fully functional (not for long, though).
511 root 1.1 </dd>
512     <p></p>
513     <dt><strong><a name="item_on_reset__24term">on_reset $term</a></strong><br />
514     </dt>
515     <dd>
516     Called after the screen is ``reset'' for any reason, such as resizing or
517     control sequences. Here is where you can react on changes to size-related
518     variables.
519     </dd>
520     <p></p>
521 root 1.33 <dt><strong><a name="item_on_child_start__24term_2c__24pid">on_child_start $term, $pid</a></strong><br />
522     </dt>
523     <dd>
524     Called just after the child process has been <code>fork</code>ed.
525     </dd>
526     <p></p>
527     <dt><strong><a name="item_on_child_exit__24term_2c__24status">on_child_exit $term, $status</a></strong><br />
528     </dt>
529     <dd>
530     Called just after the child process has exited. <code>$status</code> is the status
531     from <code>waitpid</code>.
532     </dd>
533     <p></p>
534 root 1.1 <dt><strong><a name="item_on_sel_make__24term_2c__24eventtime">on_sel_make $term, $eventtime</a></strong><br />
535     </dt>
536     <dd>
537     Called whenever a selection has been made by the user, but before the
538     selection text is copied, so changes to the beginning, end or type of the
539     selection will be honored.
540     </dd>
541     <dd>
542     <p>Returning a true value aborts selection making by urxvt, in which case you
543     have to make a selection yourself by calling <a href="#item_selection_grab"><code>$term-&gt;selection_grab</code></a>.</p>
544     </dd>
545     <p></p>
546     <dt><strong><a name="item_on_sel_grab__24term_2c__24eventtime">on_sel_grab $term, $eventtime</a></strong><br />
547     </dt>
548     <dd>
549     Called whenever a selection has been copied, but before the selection is
550     requested from the server. The selection text can be queried and changed
551     by calling <a href="#item_selection"><code>$term-&gt;selection</code></a>.
552     </dd>
553     <dd>
554     <p>Returning a true value aborts selection grabbing. It will still be hilighted.</p>
555     </dd>
556     <p></p>
557 root 1.9 <dt><strong><a name="item_on_sel_extend__24term">on_sel_extend $term</a></strong><br />
558     </dt>
559     <dd>
560     Called whenever the user tries to extend the selection (e.g. with a double
561     click) and is either supposed to return false (normal operation), or
562     should extend the selection itelf and return true to suppress the built-in
563 root 1.25 processing. This can happen multiple times, as long as the callback
564     returns true, it will be called on every further click by the user and is
565     supposed to enlarge the selection more and more, if possible.
566 root 1.9 </dd>
567     <dd>
568     <p>See the <em>selection</em> example extension.</p>
569     </dd>
570     <p></p>
571 root 1.1 <dt><strong><a name="item_on_view_change__24term_2c__24offset">on_view_change $term, $offset</a></strong><br />
572     </dt>
573     <dd>
574     Called whenever the view offset changes, i..e the user or program
575     scrolls. Offset <code>0</code> means display the normal terminal, positive values
576     show this many lines of scrollback.
577     </dd>
578     <p></p>
579     <dt><strong><a name="item_on_scroll_back__24term_2c__24lines_2c__24saved">on_scroll_back $term, $lines, $saved</a></strong><br />
580     </dt>
581     <dd>
582     Called whenever lines scroll out of the terminal area into the scrollback
583     buffer. <code>$lines</code> is the number of lines scrolled out and may be larger
584     than the scroll back buffer or the terminal.
585     </dd>
586     <dd>
587     <p>It is called before lines are scrolled out (so rows 0 .. min ($lines - 1,
588     $nrow - 1) represent the lines to be scrolled out). <code>$saved</code> is the total
589     number of lines that will be in the scrollback buffer.</p>
590     </dd>
591     <p></p>
592 root 1.11 <dt><strong><a name="item_on_osc_seq__24term_2c__24string">on_osc_seq $term, $string</a></strong><br />
593     </dt>
594     <dd>
595     Called whenever the <strong>ESC ] 777 ; string ST</strong> command sequence (OSC =
596     operating system command) is processed. Cursor position and other state
597     information is up-to-date when this happens. For interoperability, the
598     string should start with the extension name and a colon, to distinguish
599     it from commands for other extensions, and this might be enforced in the
600     future.
601     </dd>
602     <dd>
603     <p>Be careful not ever to trust (in a security sense) the data you receive,
604     as its source can not easily be controleld (e-mail content, messages from
605     other users on the same system etc.).</p>
606     </dd>
607     <p></p>
608 root 1.14 <dt><strong><a name="item_on_add_lines__24term_2c__24string">on_add_lines $term, $string</a></strong><br />
609     </dt>
610     <dd>
611     Called whenever text is about to be output, with the text as argument. You
612     can filter/change and output the text yourself by returning a true value
613     and calling <a href="#item_scr_add_lines"><code>$term-&gt;scr_add_lines</code></a> yourself. Please note that this
614     might be very slow, however, as your hook is called for <strong>all</strong> text being
615     output.
616     </dd>
617     <p></p>
618 root 1.19 <dt><strong><a name="item_on_tt_write__24term_2c__24octets">on_tt_write $term, $octets</a></strong><br />
619     </dt>
620     <dd>
621     Called whenever some data is written to the tty/pty and can be used to
622     suppress or filter tty input.
623     </dd>
624     <p></p>
625 root 1.14 <dt><strong><a name="item_on_line_update__24term_2c__24row">on_line_update $term, $row</a></strong><br />
626     </dt>
627     <dd>
628     Called whenever a line was updated or changed. Can be used to filter
629     screen output (e.g. underline urls or other useless stuff). Only lines
630     that are being shown will be filtered, and, due to performance reasons,
631     not always immediately.
632     </dd>
633     <dd>
634     <p>The row number is always the topmost row of the line if the line spans
635     multiple rows.</p>
636     </dd>
637     <dd>
638     <p>Please note that, if you change the line, then the hook might get called
639     later with the already-modified line (e.g. if unrelated parts change), so
640     you cannot just toggle rendition bits, but only set them.</p>
641     </dd>
642     <p></p>
643 root 1.1 <dt><strong><a name="item_on_refresh_begin__24term">on_refresh_begin $term</a></strong><br />
644     </dt>
645     <dd>
646     Called just before the screen gets redrawn. Can be used for overlay
647     or similar effects by modify terminal contents in refresh_begin, and
648     restoring them in refresh_end. The built-in overlay and selection display
649     code is run after this hook, and takes precedence.
650     </dd>
651     <p></p>
652     <dt><strong><a name="item_on_refresh_end__24term">on_refresh_end $term</a></strong><br />
653     </dt>
654     <dd>
655     Called just after the screen gets redrawn. See <code>on_refresh_begin</code>.
656     </dd>
657 root 1.5 <p></p>
658     <dt><strong><a name="item_on_keyboard_command__24term_2c__24string">on_keyboard_command $term, $string</a></strong><br />
659     </dt>
660     <dd>
661     Called whenever the user presses a key combination that has a
662     <code>perl:string</code> action bound to it (see description of the <strong>keysym</strong>
663 root 1.30 resource in the <code>rxvt(1)</code> manpage).
664 root 1.29 </dd>
665     <p></p>
666     <dt><strong><a name="item_on_x_event__24term_2c__24event">on_x_event $term, $event</a></strong><br />
667     </dt>
668     <dd>
669     Called on every X event received on the vt window (and possibly other
670     windows). Should only be used as a last resort. Most event structure
671     members are not passed.
672 root 1.5 </dd>
673 root 1.14 <p></p>
674 root 1.15 <dt><strong><a name="item_on_focus_in__24term">on_focus_in $term</a></strong><br />
675     </dt>
676     <dd>
677     Called whenever the window gets the keyboard focus, before rxvt-unicode
678     does focus in processing.
679     </dd>
680     <p></p>
681     <dt><strong><a name="item_on_focus_out__24term">on_focus_out $term</a></strong><br />
682     </dt>
683     <dd>
684     Called wheneever the window loses keyboard focus, before rxvt-unicode does
685     focus out processing.
686     </dd>
687     <p></p>
688 root 1.33 <dt><strong><a name="item_on_configure_notify__24term_2c__24event">on_configure_notify $term, $event</a></strong><br />
689     </dt>
690 root 1.35 <dt><strong><a name="item_on_property_notify__24term_2c__24event">on_property_notify $term, $event</a></strong><br />
691     </dt>
692 root 1.19 <dt><strong><a name="item_on_key_press__24term_2c__24event_2c__24keysym_2c__">on_key_press $term, $event, $keysym, $octets</a></strong><br />
693 root 1.14 </dt>
694 root 1.19 <dt><strong><a name="item_on_key_release__24term_2c__24event_2c__24keysym">on_key_release $term, $event, $keysym</a></strong><br />
695 root 1.14 </dt>
696     <dt><strong><a name="item_on_button_press__24term_2c__24event">on_button_press $term, $event</a></strong><br />
697     </dt>
698     <dt><strong><a name="item_on_button_release__24term_2c__24event">on_button_release $term, $event</a></strong><br />
699     </dt>
700     <dt><strong><a name="item_on_motion_notify__24term_2c__24event">on_motion_notify $term, $event</a></strong><br />
701     </dt>
702 root 1.15 <dt><strong><a name="item_on_map_notify__24term_2c__24event">on_map_notify $term, $event</a></strong><br />
703     </dt>
704     <dt><strong><a name="item_on_unmap_notify__24term_2c__24event">on_unmap_notify $term, $event</a></strong><br />
705     </dt>
706 root 1.14 <dd>
707     Called whenever the corresponding X event is received for the terminal If
708     the hook returns true, then the even will be ignored by rxvt-unicode.
709     </dd>
710     <dd>
711     <p>The event is a hash with most values as named by Xlib (see the XEvent
712 root 1.35 manpage), with the additional members <code>row</code> and <code>col</code>, which are the
713     (real, not screen-based) row and column under the mouse cursor.</p>
714 root 1.14 </dd>
715     <dd>
716     <p><code>on_key_press</code> additionally receives the string rxvt-unicode would
717     output, if any, in locale-specific encoding.</p>
718     </dd>
719     <dd>
720     <p>subwindow.</p>
721     </dd>
722 root 1.34 <p></p>
723     <dt><strong><a name="item_on_client_message__24term_2c__24event">on_client_message $term, $event</a></strong><br />
724     </dt>
725     <dt><strong><a name="item_on_wm_protocols__24term_2c__24event">on_wm_protocols $term, $event</a></strong><br />
726     </dt>
727     <dt><strong><a name="item_on_wm_delete_window__24term_2c__24event">on_wm_delete_window $term, $event</a></strong><br />
728     </dt>
729     <dd>
730     Called when various types of ClientMessage events are received (all with
731     format=32, WM_PROTOCOLS or WM_PROTOCOLS:WM_DELETE_WINDOW).
732     </dd>
733 root 1.1 <p></p></dl>
734     <p>
735     </p>
736 root 1.9 <h2><a name="variables_in_the_urxvt_package">Variables in the <code>urxvt</code> Package</a></h2>
737     <dl>
738 root 1.21 <dt><strong><a name="item__24urxvt_3a_3alibdir">$urxvt::LIBDIR</a></strong><br />
739     </dt>
740     <dd>
741     The rxvt-unicode library directory, where, among other things, the perl
742     modules and scripts are stored.
743     </dd>
744     <p></p>
745     <dt><strong><a name="item__24urxvt_3a_3aresclass_2c__24urxvt_3a_3aresclass">$urxvt::RESCLASS, $urxvt::RESCLASS</a></strong><br />
746     </dt>
747     <dd>
748     The resource class and name rxvt-unicode uses to look up X resources.
749     </dd>
750     <p></p>
751     <dt><strong><a name="item__24urxvt_3a_3arxvtname">$urxvt::RXVTNAME</a></strong><br />
752     </dt>
753     <dd>
754     The basename of the installed binaries, usually <code>urxvt</code>.
755     </dd>
756     <p></p>
757 root 1.9 <dt><strong><a name="item__24urxvt_3a_3aterm">$urxvt::TERM</a></strong><br />
758     </dt>
759     <dd>
760 root 1.14 The current terminal. This variable stores the current <code>urxvt::term</code>
761     object, whenever a callback/hook is executing.
762 root 1.9 </dd>
763 root 1.34 <p></p>
764     <dt><strong><a name="item__40urxvt_3a_3aterm_init">@urxvt::TERM_INIT</a></strong><br />
765     </dt>
766     <dd>
767     All coderefs in this array will be called as methods of the next newly
768     created <code>urxvt::term</code> object (during the <code>on_init</code> phase). The array
769     gets cleared before the codereferences that were in it are being executed,
770     so coderefs can push themselves onto it again if they so desire.
771     </dd>
772     <dd>
773     <p>This complements to the perl-eval commandline option, but gets executed
774     first.</p>
775     </dd>
776     <p></p>
777     <dt><strong><a name="item__40urxvt_3a_3aterm_ext">@urxvt::TERM_EXT</a></strong><br />
778     </dt>
779     <dd>
780     Works similar to <code>@TERM_INIT</code>, but contains perl package/class names, which
781     get registered as normal extensions after calling the hooks in <code>@TERM_INIT</code>
782     but before other extensions. Gets cleared just like <code>@TERM_INIT</code>.
783     </dd>
784 root 1.23 <p></p></dl>
785 root 1.9 <p>
786     </p>
787 root 1.1 <h2><a name="functions_in_the_urxvt_package">Functions in the <code>urxvt</code> Package</a></h2>
788     <dl>
789     <dt><strong><a name="item_urxvt_3a_3afatal__24errormessage">urxvt::fatal $errormessage</a></strong><br />
790     </dt>
791     <dd>
792     Fatally aborts execution with the given error message. Avoid at all
793     costs! The only time this is acceptable is when the terminal process
794     starts up.
795     </dd>
796     <p></p>
797     <dt><strong><a name="item_urxvt_3a_3awarn__24string">urxvt::warn $string</a></strong><br />
798     </dt>
799     <dd>
800 root 1.3 Calls <code>rxvt_warn</code> with the given string which should not include a
801 root 1.1 newline. The module also overwrites the <code>warn</code> builtin with a function
802     that calls this function.
803     </dd>
804     <dd>
805     <p>Using this function has the advantage that its output ends up in the
806     correct place, e.g. on stderr of the connecting urxvtc client.</p>
807     </dd>
808 root 1.22 <dd>
809     <p>Messages have a size limit of 1023 bytes currently.</p>
810     </dd>
811 root 1.1 <p></p>
812     <dt><strong><a name="item__24time__3d_urxvt_3a_3anow">$time = urxvt::NOW</a></strong><br />
813     </dt>
814     <dd>
815     Returns the ``current time'' (as per the event loop).
816     </dd>
817 root 1.15 <p></p>
818     <dt><strong><a name="item_urxvt_3a_3acurrenttime">urxvt::CurrentTime</a></strong><br />
819     </dt>
820     <dt><strong><a name="item_urxvt_3a_3ashiftmask_2c_lockmask_2c_controlmask_2c">urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
821     Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask,
822     Button4Mask, Button5Mask, AnyModifier</a></strong><br />
823     </dt>
824 root 1.29 <dt><strong><a name="item_urxvt_3a_3anoeventmask_2c_keypressmask_2c_keyrelea">urxvt::NoEventMask, KeyPressMask, KeyReleaseMask,
825     ButtonPressMask, ButtonReleaseMask, EnterWindowMask, LeaveWindowMask,
826     PointerMotionMask, PointerMotionHintMask, Button1MotionMask, Button2MotionMask,
827     Button3MotionMask, Button4MotionMask, Button5MotionMask, ButtonMotionMask,
828     KeymapStateMask, ExposureMask, VisibilityChangeMask, StructureNotifyMask,
829     ResizeRedirectMask, SubstructureNotifyMask, SubstructureRedirectMask,
830     FocusChangeMask, PropertyChangeMask, ColormapChangeMask, OwnerGrabButtonMask</a></strong><br />
831     </dt>
832     <dt><strong><a name="item_urxvt_3a_3akeypress_2c_keyrelease_2c_buttonpress_2">urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify,
833     EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose,
834     GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify, DestroyNotify,
835     UnmapNotify, MapNotify, MapRequest, ReparentNotify, ConfigureNotify,
836     ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify,
837     CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest,
838     SelectionNotify, ColormapNotify, ClientMessage, MappingNotify</a></strong><br />
839     </dt>
840 root 1.15 <dd>
841 root 1.16 Various constants for use in X calls and event processing.
842 root 1.15 </dd>
843 root 1.1 <p></p></dl>
844     <p>
845     </p>
846 root 1.8 <h2><a name="rendition">RENDITION</a></h2>
847     <p>Rendition bitsets contain information about colour, font, font styles and
848     similar information for each screen cell.</p>
849     <p>The following ``macros'' deal with changes in rendition sets. You should
850     never just create a bitset, you should always modify an existing one,
851     as they contain important information required for correct operation of
852     rxvt-unicode.</p>
853     <dl>
854     <dt><strong><a name="item__24rend__3d_urxvt_3a_3adefault_rstyle">$rend = urxvt::DEFAULT_RSTYLE</a></strong><br />
855     </dt>
856     <dd>
857     Returns the default rendition, as used when the terminal is starting up or
858     being reset. Useful as a base to start when creating renditions.
859     </dd>
860     <p></p>
861     <dt><strong><a name="item__24rend__3d_urxvt_3a_3aoverlay_rstyle">$rend = urxvt::OVERLAY_RSTYLE</a></strong><br />
862     </dt>
863     <dd>
864     Return the rendition mask used for overlays by default.
865     </dd>
866     <p></p>
867     <dt><strong><a name="item__24rendbit__3d_urxvt_3a_3ars_bold_2c_rs_italic_2c_">$rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline</a></strong><br />
868     </dt>
869     <dd>
870     Return the bit that enabled bold, italic, blink, reverse-video and
871     underline, respectively. To enable such a style, just logically OR it into
872     the bitset.
873     </dd>
874     <p></p>
875     <dt><strong><a name="item__24foreground__3d_urxvt_3a_3aget_basefg__24rend">$foreground = urxvt::GET_BASEFG $rend</a></strong><br />
876     </dt>
877     <dt><strong><a name="item__24background__3d_urxvt_3a_3aget_basebg__24rend">$background = urxvt::GET_BASEBG $rend</a></strong><br />
878     </dt>
879     <dd>
880     Return the foreground/background colour index, respectively.
881     </dd>
882     <p></p>
883 root 1.21 <dt><strong><a name="item__24rend__3d_urxvt_3a_3aset_fgcolor__24rend_2c__24n">$rend = urxvt::SET_FGCOLOR $rend, $new_colour</a></strong><br />
884 root 1.8 </dt>
885 root 1.21 <dt><strong><a name="item__24rend__3d_urxvt_3a_3aset_bgcolor__24rend_2c__24n">$rend = urxvt::SET_BGCOLOR $rend, $new_colour</a></strong><br />
886 root 1.8 </dt>
887     <dd>
888     Replace the foreground/background colour in the rendition mask with the
889     specified one.
890     </dd>
891     <p></p>
892 root 1.21 <dt><strong><a name="item__24value__3d_urxvt_3a_3aget_custom__24rend">$value = urxvt::GET_CUSTOM $rend</a></strong><br />
893 root 1.8 </dt>
894     <dd>
895     Return the ``custom'' value: Every rendition has 5 bits for use by
896     extensions. They can be set and changed as you like and are initially
897     zero.
898     </dd>
899     <p></p>
900 root 1.21 <dt><strong><a name="item__24rend__3d_urxvt_3a_3aset_custom__24rend_2c__24ne">$rend = urxvt::SET_CUSTOM $rend, $new_value</a></strong><br />
901 root 1.8 </dt>
902     <dd>
903     Change the custom value.
904     </dd>
905     <p></p></dl>
906     <p>
907     </p>
908 root 1.16 <h2><a name="the_urxvt__anyevent_class">The <code>urxvt::anyevent</code> Class</a></h2>
909     <p>The sole purpose of this class is to deliver an interface to the
910     <code>AnyEvent</code> module - any module using it will work inside urxvt without
911 root 1.21 further programming. The only exception is that you cannot wait on
912     condition variables, but non-blocking condvar use is ok. What this means
913     is that you cannot use blocking APIs, but the non-blocking variant should
914     work.</p>
915 root 1.16 <p>
916     </p>
917 root 1.1 <h2><a name="the_urxvt__term_class">The <code>urxvt::term</code> Class</a></h2>
918     <dl>
919 root 1.22 <dt><strong><a name="item__24term__3d_new_urxvt_3a_3aterm__24envhashref_2c__">$term = new urxvt::term $envhashref, $rxvtname, [arg...]</a></strong><br />
920     </dt>
921     <dd>
922     Creates a new terminal, very similar as if you had started it with system
923 root 1.23 <code>$rxvtname, arg...</code>. <code>$envhashref</code> must be a reference to a <code>%ENV</code>-like
924     hash which defines the environment of the new terminal.
925 root 1.22 </dd>
926     <dd>
927 root 1.23 <p>Croaks (and probably outputs an error message) if the new instance
928 root 1.22 couldn't be created. Returns <code>undef</code> if the new instance didn't
929     initialise perl, and the terminal object otherwise. The <code>init</code> and
930     <a href="#item_start"><code>start</code></a> hooks will be called during this call.</p>
931     </dd>
932     <p></p>
933 root 1.14 <dt><strong><a name="item_destroy">$term-&gt;destroy</a></strong><br />
934     </dt>
935     <dd>
936 root 1.21 Destroy the terminal object (close the window, free resources
937 root 1.30 etc.). Please note that rxvt will not exit as long as any event
938 root 1.21 watchers (timers, io watchers) are still active.
939 root 1.14 </dd>
940     <p></p>
941 root 1.33 <dt><strong><a name="item_exec_async">$term-&gt;exec_async ($cmd[, @args])</a></strong><br />
942     </dt>
943     <dd>
944     Works like the combination of the <code>fork</code>/<code>exec</code> builtins, which executes
945     (``starts'') programs in the background. This function takes care of setting
946     the user environment before exec'ing the command (e.g. <code>PATH</code>) and should
947     be preferred over explicit calls to <code>exec</code> or <code>system</code>.
948     </dd>
949     <dd>
950     <p>Returns the pid of the subprocess or <code>undef</code> on error.</p>
951     </dd>
952     <p></p>
953 root 1.15 <dt><strong><a name="item_option">$isset = $term-&gt;option ($optval[, $set])</a></strong><br />
954     </dt>
955     <dd>
956     Returns true if the option specified by <code>$optval</code> is enabled, and
957     optionally change it. All option values are stored by name in the hash
958     <code>%urxvt::OPTION</code>. Options not enabled in this binary are not in the hash.
959     </dd>
960     <dd>
961     <p>Here is a a likely non-exhaustive list of option names, please see the
962     source file <em>/src/optinc.h</em> to see the actual list:</p>
963     </dd>
964     <dd>
965     <pre>
966     borderLess console cursorBlink cursorUnderline hold iconic insecure
967     intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
968 root 1.33 override-redirect pastableTabs pointerBlank reverseVideo scrollBar
969     scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput
970     scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs
971     transparent tripleclickwords utmpInhibit visualBell</pre>
972 root 1.15 </dd>
973     <p></p>
974 root 1.2 <dt><strong><a name="item_resource">$value = $term-&gt;resource ($name[, $newval])</a></strong><br />
975     </dt>
976     <dd>
977     Returns the current resource value associated with a given name and
978     optionally sets a new value. Setting values is most useful in the <code>init</code>
979     hook. Unset resources are returned and accepted as <code>undef</code>.
980     </dd>
981     <dd>
982     <p>The new value must be properly encoded to a suitable character encoding
983     before passing it to this method. Similarly, the returned value may need
984     to be converted from the used encoding to text.</p>
985     </dd>
986     <dd>
987     <p>Resource names are as defined in <em>src/rsinc.h</em>. Colours can be specified
988     as resource names of the form <code>color+&lt;index&gt;</code>, e.g. <code>color+5</code>. (will
989     likely change).</p>
990     </dd>
991     <dd>
992     <p>Please note that resource strings will currently only be freed when the
993     terminal is destroyed, so changing options frequently will eat memory.</p>
994     </dd>
995     <dd>
996     <p>Here is a a likely non-exhaustive list of resource names, not all of which
997 root 1.15 are supported in every build, please see the source file <em>/src/rsinc.h</em>
998     to see the actual list:</p>
999 root 1.2 </dd>
1000     <dd>
1001     <pre>
1002     answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
1003     borderLess color cursorBlink cursorUnderline cutchars delete_key
1004     display_name embed ext_bwidth fade font geometry hold iconName
1005     imFont imLocale inputMethod insecure int_bwidth intensityStyles
1006 root 1.33 italicFont jumpScroll lineSpace loginShell mapAlert meta8 modifier
1007     mouseWheelScrollPage name override_redirect pastableTabs path perl_eval
1008     perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay
1009     preeditType print_pipe pty_fd reverseVideo saveLines scrollBar
1010     scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness
1011     scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle
1012     secondaryScreen secondaryScroll selectstyle shade term_name title
1013     transient_for transparent transparent_all tripleclickwords utmpInhibit
1014     visualBell</pre>
1015 root 1.2 </dd>
1016     <p></p>
1017 root 1.24 <dt><strong><a name="item_x_resource">$value = $term-&gt;x_resource ($pattern)</a></strong><br />
1018     </dt>
1019     <dd>
1020     Returns the X-Resource for the given pattern, excluding the program or
1021     class name, i.e. <a href="#item_x_resource"><code>$term-&gt;x_resource (&quot;boldFont&quot;)</code></a> should return the
1022     same value as used by this instance of rxvt-unicode. Returns <code>undef</code> if no
1023     resource with that pattern exists.
1024     </dd>
1025     <dd>
1026     <p>This method should only be called during the <code>on_start</code> hook, as there is
1027     only one resource database per display, and later invocations might return
1028     the wrong resources.</p>
1029     </dd>
1030     <p></p>
1031 root 1.19 <dt><strong><a name="item_parse_keysym">$success = $term-&gt;parse_keysym ($keysym_spec, $command_string)</a></strong><br />
1032     </dt>
1033     <dd>
1034     Adds a keymap translation exactly as specified via a resource. See the
1035 root 1.30 <code>keysym</code> resource in the <code>rxvt(1)</code> manpage.
1036 root 1.19 </dd>
1037     <p></p>
1038 root 1.14 <dt><strong><a name="item_rstyle">$rend = $term-&gt;rstyle ([$new_rstyle])</a></strong><br />
1039 root 1.13 </dt>
1040     <dd>
1041 root 1.14 Return and optionally change the current rendition. Text that is output by
1042     the terminal application will use this style.
1043 root 1.13 </dd>
1044     <p></p>
1045     <dt><strong><a name="item_screen_cur">($row, $col) = $term-&gt;screen_cur ([$row, $col])</a></strong><br />
1046     </dt>
1047     <dd>
1048     Return the current coordinates of the text cursor position and optionally
1049     set it (which is usually bad as applications don't expect that).
1050     </dd>
1051     <p></p>
1052 root 1.1 <dt><strong><a name="item_selection_mark">($row, $col) = $term-&gt;selection_mark ([$row, $col])</a></strong><br />
1053     </dt>
1054     <dt><strong><a name="item_selection_beg">($row, $col) = $term-&gt;selection_beg ([$row, $col])</a></strong><br />
1055     </dt>
1056     <dt><strong><a name="item_selection_end">($row, $col) = $term-&gt;selection_end ([$row, $col])</a></strong><br />
1057     </dt>
1058     <dd>
1059     Return the current values of the selection mark, begin or end positions,
1060     and optionally set them to new values.
1061     </dd>
1062     <p></p>
1063 root 1.25 <dt><strong><a name="item_selection_make">$term-&gt;selection_make ($eventtime[, $rectangular])</a></strong><br />
1064     </dt>
1065     <dd>
1066     Tries to make a selection as set by <a href="#item_selection_beg"><code>selection_beg</code></a> and
1067     <a href="#item_selection_end"><code>selection_end</code></a>. If <code>$rectangular</code> is true (default: false), a
1068     rectangular selection will be made. This is the prefered function to make
1069     a selection.
1070     </dd>
1071     <p></p>
1072 root 1.1 <dt><strong><a name="item_selection_grab">$success = $term-&gt;selection_grab ($eventtime)</a></strong><br />
1073     </dt>
1074     <dd>
1075 root 1.25 Try to request the primary selection text from the server (for example, as
1076     set by the next method). No visual feedback will be given. This function
1077     is mostly useful from within <code>on_sel_grab</code> hooks.
1078 root 1.1 </dd>
1079     <p></p>
1080 root 1.6 <dt><strong>$oldtext = $term-&gt;selection ([$newtext])</strong><br />
1081 root 1.1 </dt>
1082     <dd>
1083     Return the current selection text and optionally replace it by <code>$newtext</code>.
1084     </dd>
1085 root 1.19 <p></p>
1086     <dt><strong><a name="item_overlay_simple">$term-&gt;overlay_simple ($x, $y, $text)</a></strong><br />
1087     </dt>
1088 root 1.1 <dd>
1089 root 1.19 Create a simple multi-line overlay box. See the next method for details.
1090 root 1.1 </dd>
1091     <p></p>
1092 root 1.8 <dt><strong><a name="item_overlay">$term-&gt;overlay ($x, $y, $width, $height[, $rstyle[, $border]])</a></strong><br />
1093 root 1.1 </dt>
1094     <dd>
1095     Create a new (empty) overlay at the given position with the given
1096 root 1.8 width/height. <code>$rstyle</code> defines the initial rendition style
1097     (default: <code>OVERLAY_RSTYLE</code>).
1098     </dd>
1099     <dd>
1100     <p>If <code>$border</code> is <code>2</code> (default), then a decorative border will be put
1101     around the box.</p>
1102     </dd>
1103     <dd>
1104     <p>If either <code>$x</code> or <code>$y</code> is negative, then this is counted from the
1105     right/bottom side, respectively.</p>
1106 root 1.1 </dd>
1107     <dd>
1108 root 1.8 <p>This method returns an urxvt::overlay object. The overlay will be visible
1109     as long as the perl object is referenced.</p>
1110 root 1.1 </dd>
1111     <dd>
1112 root 1.9 <p>The methods currently supported on <code>urxvt::overlay</code> objects are:</p>
1113 root 1.1 </dd>
1114 root 1.9 <dl>
1115 root 1.8 <dt><strong><a name="item_set">$overlay-&gt;set ($x, $y, $text, $rend)</a></strong><br />
1116 root 1.1 </dt>
1117     <dd>
1118 root 1.8 Similar to <a href="#item_row_t"><code>$term-&gt;ROW_t</code></a> and <a href="#item_row_r"><code>$term-&gt;ROW_r</code></a> in that it puts
1119     text in rxvt-unicode's special encoding and an array of rendition values
1120     at a specific position inside the overlay.
1121 root 1.1 </dd>
1122 root 1.3 <p></p>
1123 root 1.9 <dt><strong><a name="item_hide">$overlay-&gt;hide</a></strong><br />
1124     </dt>
1125     <dd>
1126     If visible, hide the overlay, but do not destroy it.
1127     </dd>
1128     <p></p>
1129     <dt><strong><a name="item_show">$overlay-&gt;show</a></strong><br />
1130     </dt>
1131     <dd>
1132     If hidden, display the overlay again.
1133     </dd>
1134     <p></p></dl>
1135 root 1.16 <dt><strong>$popup = $term-&gt;popup ($event)</strong><br />
1136 root 1.15 </dt>
1137     <dd>
1138     Creates a new <code>urxvt::popup</code> object that implements a popup menu. The
1139     <code>$event</code> <em>must</em> be the event causing the menu to pop up (a button event,
1140     currently).
1141     </dd>
1142     <p></p>
1143 root 1.14 <dt><strong><a name="item_strwidth">$cellwidth = $term-&gt;strwidth ($string)</a></strong><br />
1144 root 1.3 </dt>
1145     <dd>
1146     Returns the number of screen-cells this string would need. Correctly
1147     accounts for wide and combining characters.
1148     </dd>
1149     <p></p>
1150 root 1.14 <dt><strong><a name="item_locale_encode">$octets = $term-&gt;locale_encode ($string)</a></strong><br />
1151 root 1.3 </dt>
1152     <dd>
1153     Convert the given text string into the corresponding locale encoding.
1154     </dd>
1155     <p></p>
1156 root 1.14 <dt><strong><a name="item_locale_decode">$string = $term-&gt;locale_decode ($octets)</a></strong><br />
1157 root 1.3 </dt>
1158     <dd>
1159     Convert the given locale-encoded octets into a perl string.
1160     </dd>
1161     <p></p>
1162 root 1.19 <dt><strong><a name="item_scr_xor_span">$term-&gt;scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])</a></strong><br />
1163     </dt>
1164     <dd>
1165     XORs the rendition values in the given span with the provided value
1166 root 1.25 (default: <code>RS_RVid</code>), which <em>MUST NOT</em> contain font styles. Useful in
1167     refresh hooks to provide effects similar to the selection.
1168 root 1.19 </dd>
1169     <p></p>
1170     <dt><strong><a name="item_scr_xor_rect">$term-&gt;scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])</a></strong><br />
1171     </dt>
1172     <dd>
1173     Similar to <a href="#item_scr_xor_span"><code>scr_xor_span</code></a>, but xors a rectangle instead. Trailing
1174     whitespace will additionally be xored with the <code>$rstyle2</code>, which defaults
1175     to <code>RS_RVid | RS_Uline</code>, which removes reverse video again and underlines
1176 root 1.25 it instead. Both styles <em>MUST NOT</em> contain font styles.
1177 root 1.19 </dd>
1178     <p></p>
1179     <dt><strong><a name="item_scr_bell">$term-&gt;scr_bell</a></strong><br />
1180     </dt>
1181     <dd>
1182     Ring the bell!
1183     </dd>
1184     <p></p>
1185 root 1.14 <dt><strong><a name="item_scr_add_lines">$term-&gt;scr_add_lines ($string)</a></strong><br />
1186     </dt>
1187     <dd>
1188     Write the given text string to the screen, as if output by the application
1189     running inside the terminal. It may not contain command sequences (escape
1190     codes), but is free to use line feeds, carriage returns and tabs. The
1191     string is a normal text string, not in locale-dependent encoding.
1192     </dd>
1193     <dd>
1194     <p>Normally its not a good idea to use this function, as programs might be
1195     confused by changes in cursor position or scrolling. Its useful inside a
1196     <code>on_add_lines</code> hook, though.</p>
1197     </dd>
1198     <p></p>
1199 root 1.35 <dt><strong><a name="item_scr_change_screen">$term-&gt;scr_change_screen ($screen)</a></strong><br />
1200     </dt>
1201     <dd>
1202     Switch to given screen - 0 primary, 1 secondary.
1203     </dd>
1204     <p></p>
1205 root 1.14 <dt><strong><a name="item_cmd_parse">$term-&gt;cmd_parse ($octets)</a></strong><br />
1206     </dt>
1207     <dd>
1208     Similar to <a href="#item_scr_add_lines"><code>scr_add_lines</code></a>, but the argument must be in the
1209     locale-specific encoding of the terminal and can contain command sequences
1210     (escape codes) that will be interpreted.
1211     </dd>
1212     <p></p>
1213 root 1.3 <dt><strong><a name="item_tt_write">$term-&gt;tt_write ($octets)</a></strong><br />
1214     </dt>
1215     <dd>
1216     Write the octets given in <code>$data</code> to the tty (i.e. as program input). To
1217 root 1.6 pass characters instead of octets, you should convert your strings first
1218     to the locale-specific encoding using <a href="#item_locale_encode"><code>$term-&gt;locale_encode</code></a>.
1219     </dd>
1220     <p></p>
1221 root 1.19 <dt><strong><a name="item_pty_ev_events">$old_events = $term-&gt;pty_ev_events ([$new_events])</a></strong><br />
1222     </dt>
1223     <dd>
1224     Replaces the event mask of the pty watcher by the given event mask. Can
1225     be used to suppress input and output handling to the pty/tty. See the
1226     description of <a href="#item_events"><code>urxvt::timer-&gt;events</code></a>. Make sure to always restore
1227     the previous value.
1228     </dd>
1229     <p></p>
1230 root 1.37 <dt><strong><a name="item_pty_fd">$fd = $term-&gt;pty_fd</a></strong><br />
1231     </dt>
1232     <dd>
1233     Returns the master file descriptor for the pty in use, or <code>-1</code> if no pty
1234     is used.
1235     </dd>
1236     <p></p>
1237 root 1.14 <dt><strong><a name="item_parent">$windowid = $term-&gt;parent</a></strong><br />
1238     </dt>
1239     <dd>
1240     Return the window id of the toplevel window.
1241     </dd>
1242     <p></p>
1243     <dt><strong><a name="item_vt">$windowid = $term-&gt;vt</a></strong><br />
1244     </dt>
1245     <dd>
1246     Return the window id of the terminal window.
1247     </dd>
1248     <p></p>
1249 root 1.29 <dt><strong><a name="item_vt_emask_add">$term-&gt;vt_emask_add ($x_event_mask)</a></strong><br />
1250     </dt>
1251     <dd>
1252     Adds the specified events to the vt event mask. Useful e.g. when you want
1253     to receive pointer events all the times:
1254     </dd>
1255     <dd>
1256     <pre>
1257     $term-&gt;vt_emask_add (urxvt::PointerMotionMask);</pre>
1258     </dd>
1259     <p></p>
1260 root 1.13 <dt><strong><a name="item_width">$window_width = $term-&gt;width</a></strong><br />
1261     </dt>
1262     <dt><strong><a name="item_height">$window_height = $term-&gt;height</a></strong><br />
1263     </dt>
1264     <dt><strong><a name="item_fwidth">$font_width = $term-&gt;fwidth</a></strong><br />
1265 root 1.6 </dt>
1266 root 1.13 <dt><strong><a name="item_fheight">$font_height = $term-&gt;fheight</a></strong><br />
1267 root 1.6 </dt>
1268 root 1.13 <dt><strong><a name="item_fbase">$font_ascent = $term-&gt;fbase</a></strong><br />
1269     </dt>
1270     <dt><strong><a name="item_nrow">$terminal_rows = $term-&gt;nrow</a></strong><br />
1271     </dt>
1272     <dt><strong><a name="item_ncol">$terminal_columns = $term-&gt;ncol</a></strong><br />
1273     </dt>
1274     <dt><strong><a name="item_focus">$has_focus = $term-&gt;focus</a></strong><br />
1275     </dt>
1276     <dt><strong><a name="item_mapped">$is_mapped = $term-&gt;mapped</a></strong><br />
1277     </dt>
1278     <dt><strong><a name="item_savelines">$max_scrollback = $term-&gt;saveLines</a></strong><br />
1279     </dt>
1280     <dt><strong><a name="item_total_rows">$nrow_plus_saveLines = $term-&gt;total_rows</a></strong><br />
1281     </dt>
1282 root 1.30 <dt><strong><a name="item_top_row">$topmost_scrollback_row = $term-&gt;top_row</a></strong><br />
1283 root 1.6 </dt>
1284     <dd>
1285 root 1.13 Return various integers describing terminal characteristics.
1286 root 1.6 </dd>
1287     <p></p>
1288 root 1.22 <dt><strong><a name="item_display_id">$x_display = $term-&gt;display_id</a></strong><br />
1289     </dt>
1290     <dd>
1291     Return the DISPLAY used by rxvt-unicode.
1292     </dd>
1293     <p></p>
1294 root 1.19 <dt><strong><a name="item_locale">$lc_ctype = $term-&gt;locale</a></strong><br />
1295     </dt>
1296     <dd>
1297     Returns the LC_CTYPE category string used by this rxvt-unicode.
1298     </dd>
1299     <p></p>
1300 root 1.22 <dt><strong><a name="item_env">$env = $term-&gt;env</a></strong><br />
1301 root 1.19 </dt>
1302     <dd>
1303 root 1.22 Returns a copy of the environment in effect for the terminal as a hashref
1304     similar to <code>\%ENV</code>.
1305 root 1.19 </dd>
1306     <p></p>
1307 root 1.15 <dt><strong><a name="item_modlevel3mask">$modifiermask = $term-&gt;ModLevel3Mask</a></strong><br />
1308     </dt>
1309     <dt><strong><a name="item_modmetamask">$modifiermask = $term-&gt;ModMetaMask</a></strong><br />
1310     </dt>
1311     <dt><strong><a name="item_modnumlockmask">$modifiermask = $term-&gt;ModNumLockMask</a></strong><br />
1312     </dt>
1313     <dd>
1314     Return the modifier masks corresponding to the ``ISO Level 3 Shift'' (often
1315     AltGr), the meta key (often Alt) and the num lock key, if applicable.
1316     </dd>
1317     <p></p>
1318 root 1.35 <dt><strong><a name="item_current_screen">$screen = $term-&gt;current_screen</a></strong><br />
1319     </dt>
1320     <dd>
1321     Returns the currently displayed screen (0 primary, 1 secondary).
1322     </dd>
1323     <p></p>
1324 root 1.36 <dt><strong><a name="item_hidden_cursor">$cursor_is_hidden = $term-&gt;hidden_cursor</a></strong><br />
1325     </dt>
1326     <dd>
1327     Returns wether the cursor is currently hidden or not.
1328     </dd>
1329     <p></p>
1330 root 1.6 <dt><strong><a name="item_view_start">$view_start = $term-&gt;view_start ([$newvalue])</a></strong><br />
1331     </dt>
1332     <dd>
1333 root 1.30 Returns the row number of the topmost displayed line. Maximum value is
1334     <code>0</code>, which displays the normal terminal contents. Lower values scroll
1335 root 1.6 this many lines into the scrollback buffer.
1336     </dd>
1337     <p></p>
1338     <dt><strong><a name="item_want_refresh">$term-&gt;want_refresh</a></strong><br />
1339     </dt>
1340     <dd>
1341     Requests a screen refresh. At the next opportunity, rxvt-unicode will
1342     compare the on-screen display with its stored representation. If they
1343     differ, it redraws the differences.
1344     </dd>
1345     <dd>
1346     <p>Used after changing terminal contents to display them.</p>
1347     </dd>
1348     <p></p>
1349     <dt><strong><a name="item_row_t">$text = $term-&gt;ROW_t ($row_number[, $new_text[, $start_col]])</a></strong><br />
1350     </dt>
1351     <dd>
1352     Returns the text of the entire row with number <code>$row_number</code>. Row <code>0</code>
1353     is the topmost terminal line, row <code>$term-&gt;$ncol-1</code> is the bottommost
1354     terminal line. The scrollback buffer starts at line <code>-1</code> and extends to
1355 root 1.30 line <code>-$term-&gt;nsaved</code>. Nothing will be returned if a nonexistent line
1356 root 1.9 is requested.
1357 root 1.6 </dd>
1358     <dd>
1359     <p>If <code>$new_text</code> is specified, it will replace characters in the current
1360     line, starting at column <code>$start_col</code> (default <code>0</code>), which is useful
1361 root 1.8 to replace only parts of a line. The font index in the rendition will
1362 root 1.6 automatically be updated.</p>
1363     </dd>
1364     <dd>
1365 root 1.37 <p><a href="#item__24text"><code>$text</code></a> is in a special encoding: tabs and wide characters that use more
1366     than one cell when displayed are padded with <code>$urxvt::NOCHAR</code> (chr 65535)
1367 root 1.35 characters. Characters with combining characters and other characters that
1368     do not fit into the normal tetx encoding will be replaced with characters
1369     in the private use area.</p>
1370 root 1.6 </dd>
1371     <dd>
1372     <p>You have to obey this encoding when changing text. The advantage is
1373     that <code>substr</code> and similar functions work on screen cells and not on
1374     characters.</p>
1375     </dd>
1376     <dd>
1377 root 1.17 <p>The methods <a href="#item_special_encode"><code>$term-&gt;special_encode</code></a> and <a href="#item_special_decode"><code>$term-&gt;special_decode</code></a>
1378 root 1.6 can be used to convert normal strings into this encoding and vice versa.</p>
1379     </dd>
1380     <p></p>
1381     <dt><strong><a name="item_row_r">$rend = $term-&gt;ROW_r ($row_number[, $new_rend[, $start_col]])</a></strong><br />
1382     </dt>
1383     <dd>
1384     Like <a href="#item_row_t"><code>$term-&gt;ROW_t</code></a>, but returns an arrayref with rendition
1385     bitsets. Rendition bitsets contain information about colour, font, font
1386     styles and similar information. See also <a href="#item_row_t"><code>$term-&gt;ROW_t</code></a>.
1387     </dd>
1388     <dd>
1389     <p>When setting rendition, the font mask will be ignored.</p>
1390     </dd>
1391     <dd>
1392 root 1.8 <p>See the section on RENDITION, above.</p>
1393 root 1.6 </dd>
1394     <p></p>
1395     <dt><strong><a name="item_row_l">$length = $term-&gt;ROW_l ($row_number[, $new_length])</a></strong><br />
1396     </dt>
1397     <dd>
1398 root 1.9 Returns the number of screen cells that are in use (``the line
1399     length''). Unlike the urxvt core, this returns <a href="#item_ncol"><code>$term-&gt;ncol</code></a> if the
1400     line is joined with the following one.
1401     </dd>
1402     <p></p>
1403     <dt><strong><a name="item_is_longer">$bool = $term-&gt;is_longer ($row_number)</a></strong><br />
1404     </dt>
1405     <dd>
1406     Returns true if the row is part of a multiple-row logical ``line'' (i.e.
1407     joined with the following row), which means all characters are in use
1408     and it is continued on the next row (and possibly a continuation of the
1409     previous row(s)).
1410 root 1.6 </dd>
1411     <p></p>
1412 root 1.9 <dt><strong><a name="item_line">$line = $term-&gt;line ($row_number)</a></strong><br />
1413     </dt>
1414     <dd>
1415     Create and return a new <code>urxvt::line</code> object that stores information
1416     about the logical line that row <code>$row_number</code> is part of. It supports the
1417     following methods:
1418     </dd>
1419     <dl>
1420 root 1.14 <dt><strong><a name="item_t">$text = $line-&gt;t ([$new_text])</a></strong><br />
1421 root 1.9 </dt>
1422     <dd>
1423 root 1.14 Returns or replaces the full text of the line, similar to <a href="#item_row_t"><code>ROW_t</code></a>
1424 root 1.9 </dd>
1425     <p></p>
1426 root 1.14 <dt><strong><a name="item_r">$rend = $line-&gt;r ([$new_rend])</a></strong><br />
1427 root 1.9 </dt>
1428     <dd>
1429 root 1.14 Returns or replaces the full rendition array of the line, similar to <a href="#item_row_r"><code>ROW_r</code></a>
1430 root 1.9 </dd>
1431     <p></p>
1432     <dt><strong><a name="item_l">$length = $line-&gt;l</a></strong><br />
1433     </dt>
1434     <dd>
1435     Returns the length of the line in cells, similar to <a href="#item_row_l"><code>ROW_l</code></a>.
1436     </dd>
1437     <p></p>
1438     <dt><strong><a name="item_beg">$rownum = $line-&gt;beg</a></strong><br />
1439     </dt>
1440     <dt><strong><a name="item_end">$rownum = $line-&gt;end</a></strong><br />
1441     </dt>
1442     <dd>
1443     Return the row number of the first/last row of the line, respectively.
1444     </dd>
1445     <p></p>
1446     <dt><strong><a name="item_offset_of">$offset = $line-&gt;offset_of ($row, $col)</a></strong><br />
1447     </dt>
1448     <dd>
1449     Returns the character offset of the given row|col pair within the logical
1450 root 1.25 line. Works for rows outside the line, too, and returns corresponding
1451     offsets outside the string.
1452 root 1.9 </dd>
1453     <p></p>
1454     <dt><strong><a name="item_coord_of">($row, $col) = $line-&gt;coord_of ($offset)</a></strong><br />
1455     </dt>
1456     <dd>
1457     Translates a string offset into terminal coordinates again.
1458     </dd>
1459     <p></p></dl>
1460 root 1.17 <dt><strong><a name="item_special_encode">$text = $term-&gt;special_encode $string</a></strong><br />
1461 root 1.6 </dt>
1462     <dd>
1463     Converts a perl string into the special encoding used by rxvt-unicode,
1464     where one character corresponds to one screen cell. See
1465     <a href="#item_row_t"><code>$term-&gt;ROW_t</code></a> for details.
1466     </dd>
1467     <p></p>
1468     <dt><strong><a name="item_special_decode">$string = $term-&gt;special_decode $text</a></strong><br />
1469     </dt>
1470     <dd>
1471     Converts rxvt-unicodes text reprsentation into a perl string. See
1472     <a href="#item_row_t"><code>$term-&gt;ROW_t</code></a> for details.
1473     </dd>
1474 root 1.17 <p></p>
1475     <dt><strong><a name="item_grab_button">$success = $term-&gt;grab_button ($button, $modifiermask)</a></strong><br />
1476     </dt>
1477     <dd>
1478 root 1.18 Registers a synchronous button grab. See the XGrabButton manpage.
1479 root 1.17 </dd>
1480     <p></p>
1481     <dt><strong><a name="item_grab">$success = $term-&gt;grab ($eventtime[, $sync])</a></strong><br />
1482     </dt>
1483     <dd>
1484     Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1485     synchronous (<code>$sync</code> is true). Also remembers the grab timestampe.
1486     </dd>
1487     <p></p>
1488     <dt><strong><a name="item_allow_events_async">$term-&gt;allow_events_async</a></strong><br />
1489     </dt>
1490     <dd>
1491     Calls XAllowEvents with AsyncBoth for the most recent grab.
1492     </dd>
1493     <p></p>
1494     <dt><strong><a name="item_allow_events_sync">$term-&gt;allow_events_sync</a></strong><br />
1495     </dt>
1496     <dd>
1497     Calls XAllowEvents with SyncBoth for the most recent grab.
1498     </dd>
1499     <p></p>
1500     <dt><strong><a name="item_allow_events_replay">$term-&gt;allow_events_replay</a></strong><br />
1501     </dt>
1502     <dd>
1503     Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for the most
1504     recent grab.
1505     </dd>
1506     <p></p>
1507     <dt><strong><a name="item_ungrab">$term-&gt;ungrab</a></strong><br />
1508     </dt>
1509     <dd>
1510     Calls XUngrab for the most recent grab. Is called automatically on
1511     evaluation errors, as it is better to lose the grab in the error case as
1512     the session.
1513     </dd>
1514 root 1.35 <p></p>
1515     <dt><strong><a name="item_xinternatom">$atom = $term-&gt;XInternAtom ($atom_name[, $only_if_exists])</a></strong><br />
1516     </dt>
1517     <dt><strong><a name="item_xgetatomname">$atom_name = $term-&gt;XGetAtomName ($atom)</a></strong><br />
1518     </dt>
1519     <dt><strong><a name="item_xlistproperties">@atoms = $term-&gt;XListProperties ($window)</a></strong><br />
1520     </dt>
1521     <dt><strong><a name="item_xgetwindowproperty">($type,$format,$octets) = $term-&gt;XGetWindowProperty ($window, $property)</a></strong><br />
1522     </dt>
1523     <dt><strong><a name="item_xchangewindowproperty">$term-&gt;XChangeWindowProperty ($window, $property, $type, $format, $octets)</a></strong><br />
1524     </dt>
1525     <dt><strong><a name="item_xdeleteproperty">$term-&gt;XDeleteProperty ($window, $property)</a></strong><br />
1526     </dt>
1527     <dt><strong><a name="item_defaultrootwindow">$window = $term-&gt;DefaultRootWindow</a></strong><br />
1528     </dt>
1529     <dt><strong><a name="item_xreparentwindow">$term-&gt;XReparentWindow ($window, $parent, [$x, $y])</a></strong><br />
1530     </dt>
1531     <dt><strong><a name="item_xmapwindow">$term-&gt;XMapWindow ($window)</a></strong><br />
1532     </dt>
1533     <dt><strong><a name="item_xunmapwindow">$term-&gt;XUnmapWindow ($window)</a></strong><br />
1534     </dt>
1535     <dt><strong><a name="item_xmoveresizewindow">$term-&gt;XMoveResizeWindow ($window, $x, $y, $width, $height)</a></strong><br />
1536     </dt>
1537     <dt><strong><a name="item_xtranslatecoordinates">($x, $y, $child_window) = $term-&gt;XTranslateCoordinates ($src, $dst, $x, $y)</a></strong><br />
1538     </dt>
1539     <dt><strong><a name="item_xchangeinput">$term-&gt;XChangeInput ($window, $add_events[, $del_events])</a></strong><br />
1540     </dt>
1541     <dd>
1542     Various X or X-related functions. The <code>$term</code> object only serves as
1543     the source of the display, otherwise those functions map more-or-less
1544     directory onto the X functions of the same name.
1545     </dd>
1546 root 1.6 <p></p></dl>
1547     <p>
1548     </p>
1549 root 1.15 <h2><a name="the_urxvt__popup_class">The <code>urxvt::popup</code> Class</a></h2>
1550 root 1.21 <dl>
1551     <dt><strong><a name="item_add_title">$popup-&gt;add_title ($title)</a></strong><br />
1552     </dt>
1553     <dd>
1554     Adds a non-clickable title to the popup.
1555     </dd>
1556     <p></p>
1557     <dt><strong><a name="item_add_separator">$popup-&gt;add_separator ([$sepchr])</a></strong><br />
1558     </dt>
1559     <dd>
1560     Creates a separator, optionally using the character given as <code>$sepchr</code>.
1561     </dd>
1562     <p></p>
1563     <dt><strong><a name="item_add_button">$popup-&gt;add_button ($text, $cb)</a></strong><br />
1564     </dt>
1565     <dd>
1566     Adds a clickable button to the popup. <code>$cb</code> is called whenever it is
1567     selected.
1568     </dd>
1569     <p></p>
1570     <dt><strong><a name="item_add_toggle">$popup-&gt;add_toggle ($text, $cb, $initial_value)</a></strong><br />
1571     </dt>
1572     <dd>
1573     Adds a toggle/checkbox item to the popup. Teh callback gets called
1574     whenever it gets toggled, with a boolean indicating its value as its first
1575     argument.
1576     </dd>
1577     <p></p>
1578     <dt><strong>$popup-&gt;show</strong><br />
1579     </dt>
1580     <dd>
1581     Displays the popup (which is initially hidden).
1582     </dd>
1583     <p></p></dl>
1584 root 1.15 <p>
1585     </p>
1586 root 1.1 <h2><a name="the_urxvt__timer_class">The <code>urxvt::timer</code> Class</a></h2>
1587     <p>This class implements timer watchers/events. Time is represented as a
1588     fractional number of seconds since the epoch. Example:</p>
1589     <pre>
1590 root 1.8 $term-&gt;{overlay} = $term-&gt;overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
1591 root 1.1 $term-&gt;{timer} = urxvt::timer
1592     -&gt;new
1593 root 1.8 -&gt;interval (1)
1594 root 1.1 -&gt;cb (sub {
1595 root 1.8 $term-&gt;{overlay}-&gt;set (0, 0,
1596     sprintf &quot;%2d:%02d:%02d&quot;, (localtime urxvt::NOW)[2,1,0]);
1597 root 1.1 });</pre>
1598     <dl>
1599     <dt><strong><a name="item__24timer__3d_new_urxvt_3a_3atimer">$timer = new urxvt::timer</a></strong><br />
1600     </dt>
1601     <dd>
1602 root 1.8 Create a new timer object in started state. It is scheduled to fire
1603     immediately.
1604 root 1.1 </dd>
1605     <p></p>
1606     <dt><strong><a name="item_cb">$timer = $timer-&gt;cb (sub { my ($timer) = @_; ... })</a></strong><br />
1607     </dt>
1608     <dd>
1609     Set the callback to be called when the timer triggers.
1610     </dd>
1611     <p></p>
1612     <dt><strong><a name="item_at">$tstamp = $timer-&gt;at</a></strong><br />
1613     </dt>
1614     <dd>
1615     Return the time this watcher will fire next.
1616     </dd>
1617     <p></p>
1618 root 1.8 <dt><strong>$timer = $timer-&gt;set ($tstamp)</strong><br />
1619 root 1.1 </dt>
1620     <dd>
1621     Set the time the event is generated to $tstamp.
1622     </dd>
1623     <p></p>
1624 root 1.8 <dt><strong><a name="item_interval">$timer = $timer-&gt;interval ($interval)</a></strong><br />
1625     </dt>
1626     <dd>
1627     Normally (and when <code>$interval</code> is <code>0</code>), the timer will automatically
1628     stop after it has fired once. If <code>$interval</code> is non-zero, then the timer
1629     is automatically rescheduled at the given intervals.
1630     </dd>
1631     <p></p>
1632 root 1.1 <dt><strong><a name="item_start">$timer = $timer-&gt;start</a></strong><br />
1633     </dt>
1634     <dd>
1635     Start the timer.
1636     </dd>
1637     <p></p>
1638     <dt><strong>$timer = $timer-&gt;start ($tstamp)</strong><br />
1639     </dt>
1640     <dd>
1641     Set the event trigger time to <code>$tstamp</code> and start the timer.
1642     </dd>
1643     <p></p>
1644 root 1.33 <dt><strong><a name="item_after">$timer = $timer-&gt;after ($delay)</a></strong><br />
1645     </dt>
1646     <dd>
1647     Like <a href="#item_start"><code>start</code></a>, but sets the expiry timer to c&lt;urxvt::NOW + $delay&gt;.
1648     </dd>
1649     <p></p>
1650 root 1.1 <dt><strong><a name="item_stop">$timer = $timer-&gt;stop</a></strong><br />
1651     </dt>
1652     <dd>
1653     Stop the timer.
1654     </dd>
1655     <p></p></dl>
1656     <p>
1657     </p>
1658     <h2><a name="the_urxvt__iow_class">The <code>urxvt::iow</code> Class</a></h2>
1659     <p>This class implements io watchers/events. Example:</p>
1660     <pre>
1661     $term-&gt;{socket} = ...
1662     $term-&gt;{iow} = urxvt::iow
1663     -&gt;new
1664     -&gt;fd (fileno $term-&gt;{socket})
1665 root 1.19 -&gt;events (urxvt::EVENT_READ)
1666 root 1.1 -&gt;start
1667     -&gt;cb (sub {
1668     my ($iow, $revents) = @_;
1669     # $revents must be 1 here, no need to check
1670     sysread $term-&gt;{socket}, my $buf, 8192
1671     or end-of-file;
1672     });</pre>
1673     <dl>
1674     <dt><strong><a name="item__24iow__3d_new_urxvt_3a_3aiow">$iow = new urxvt::iow</a></strong><br />
1675     </dt>
1676     <dd>
1677     Create a new io watcher object in stopped state.
1678     </dd>
1679     <p></p>
1680     <dt><strong>$iow = $iow-&gt;cb (sub { my ($iow, $reventmask) = @_; ... })</strong><br />
1681     </dt>
1682     <dd>
1683     Set the callback to be called when io events are triggered. <code>$reventmask</code>
1684     is a bitset as described in the <a href="#item_events"><code>events</code></a> method.
1685     </dd>
1686     <p></p>
1687     <dt><strong><a name="item_fd">$iow = $iow-&gt;fd ($fd)</a></strong><br />
1688     </dt>
1689     <dd>
1690     Set the filedescriptor (not handle) to watch.
1691     </dd>
1692     <p></p>
1693     <dt><strong><a name="item_events">$iow = $iow-&gt;events ($eventmask)</a></strong><br />
1694     </dt>
1695     <dd>
1696 root 1.19 Set the event mask to watch. The only allowed values are
1697     <code>urxvt::EVENT_READ</code> and <code>urxvt::EVENT_WRITE</code>, which might be ORed
1698     together, or <code>urxvt::EVENT_NONE</code>.
1699 root 1.1 </dd>
1700     <p></p>
1701     <dt><strong>$iow = $iow-&gt;start</strong><br />
1702     </dt>
1703     <dd>
1704     Start watching for requested events on the given handle.
1705     </dd>
1706     <p></p>
1707     <dt><strong>$iow = $iow-&gt;stop</strong><br />
1708     </dt>
1709     <dd>
1710     Stop watching for events on the given filehandle.
1711     </dd>
1712     <p></p></dl>
1713     <p>
1714     </p>
1715 root 1.34 <h2><a name="the_urxvt__iw_class">The <code>urxvt::iw</code> Class</a></h2>
1716     <p>This class implements idle watchers, that get called automatically when
1717     the process is idle. They should return as fast as possible, after doing
1718     some useful work.</p>
1719     <dl>
1720     <dt><strong><a name="item__24iw__3d_new_urxvt_3a_3aiw">$iw = new urxvt::iw</a></strong><br />
1721     </dt>
1722     <dd>
1723     Create a new idle watcher object in stopped state.
1724     </dd>
1725     <p></p>
1726     <dt><strong>$iw = $iw-&gt;cb (sub { my ($iw) = @_; ... })</strong><br />
1727     </dt>
1728     <dd>
1729     Set the callback to be called when the watcher triggers.
1730     </dd>
1731     <p></p>
1732     <dt><strong>$timer = $timer-&gt;start</strong><br />
1733     </dt>
1734     <dd>
1735     Start the watcher.
1736     </dd>
1737     <p></p>
1738     <dt><strong>$timer = $timer-&gt;stop</strong><br />
1739     </dt>
1740     <dd>
1741     Stop the watcher.
1742     </dd>
1743     <p></p></dl>
1744     <p>
1745     </p>
1746     <h2><a name="the_urxvt__pw_class">The <code>urxvt::pw</code> Class</a></h2>
1747     <p>This class implements process watchers. They create an event whenever a
1748     process exits, after which they stop automatically.</p>
1749     <pre>
1750     my $pid = fork;
1751     ...
1752     $term-&gt;{pw} = urxvt::pw
1753     -&gt;new
1754     -&gt;start ($pid)
1755     -&gt;cb (sub {
1756     my ($pw, $exit_status) = @_;
1757     ...
1758     });</pre>
1759     <dl>
1760     <dt><strong><a name="item__24pw__3d_new_urxvt_3a_3apw">$pw = new urxvt::pw</a></strong><br />
1761     </dt>
1762     <dd>
1763     Create a new process watcher in stopped state.
1764     </dd>
1765     <p></p>
1766     <dt><strong>$pw = $pw-&gt;cb (sub { my ($pw, $exit_status) = @_; ... })</strong><br />
1767     </dt>
1768     <dd>
1769     Set the callback to be called when the timer triggers.
1770     </dd>
1771     <p></p>
1772     <dt><strong>$pw = $timer-&gt;start ($pid)</strong><br />
1773     </dt>
1774     <dd>
1775     Tells the wqtcher to start watching for process <code>$pid</code>.
1776     </dd>
1777     <p></p>
1778     <dt><strong>$pw = $pw-&gt;stop</strong><br />
1779     </dt>
1780     <dd>
1781     Stop the watcher.
1782     </dd>
1783     <p></p></dl>
1784     <p>
1785     </p>
1786 root 1.1 <hr />
1787 root 1.2 <h1><a name="environment">ENVIRONMENT</a></h1>
1788     <p>
1789     </p>
1790     <h2><a name="urxvt_perl_verbosity">URXVT_PERL_VERBOSITY</a></h2>
1791     <p>This variable controls the verbosity level of the perl extension. Higher
1792     numbers indicate more verbose output.</p>
1793 root 1.10 <dl>
1794 root 1.17 <dt><strong><a name="item__3d_3d_0__2d_fatal_messages">== 0 - fatal messages</a></strong><br />
1795 root 1.10 </dt>
1796 root 1.17 <dt><strong><a name="item__3e_3d_3__2d_script_loading_and_management">&gt;= 3 - script loading and management</a></strong><br />
1797 root 1.10 </dt>
1798 root 1.25 <dt><strong><a name="item__3e_3d10__2d_all_called_hooks">&gt;=10 - all called hooks</a></strong><br />
1799     </dt>
1800     <dt><strong><a name="item__3e_3d11__2d_hook_reutrn_values">&gt;=11 - hook reutrn values</a></strong><br />
1801 root 1.10 </dt>
1802     </dl>
1803 root 1.2 <p>
1804     </p>
1805     <hr />
1806 root 1.1 <h1><a name="author">AUTHOR</a></h1>
1807     <pre>
1808     Marc Lehmann &lt;pcg@goof.com&gt;
1809     <a href="http://software.schmorp.de/pkg/rxvt-unicode">http://software.schmorp.de/pkg/rxvt-unicode</a></pre>
1810    
1811     </body>
1812    
1813     </html>