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

File Contents

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