ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.html
Revision: 1.45
Committed: Mon Jul 17 19:20:29 2006 UTC (17 years, 11 months ago) by root
Content type: text/html
Branch: MAIN
CVS Tags: rel-7_8
Changes since 1.44: +31 -0 lines
Log Message:
*** empty log message ***

File Contents

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