ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.html
Revision: 1.1
Committed: Mon Jan 2 15:59:25 2006 UTC (18 years, 6 months ago) by root
Content type: text/html
Branch: MAIN
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     <ul>
19    
20     <li><a href="#hooks">Hooks</a></li>
21     <li><a href="#functions_in_the_urxvt_package">Functions in the <code>urxvt</code> Package</a></li>
22     <li><a href="#the_urxvt__term_class">The <code>urxvt::term</code> Class</a></li>
23     <li><a href="#the_urxvt__timer_class">The <code>urxvt::timer</code> Class</a></li>
24     <li><a href="#the_urxvt__iow_class">The <code>urxvt::iow</code> Class</a></li>
25     </ul>
26    
27     <li><a href="#author">AUTHOR</a></li>
28     </ul>
29     <!-- INDEX END -->
30    
31     <hr />
32     <p>
33     </p>
34     <h1><a name="name">NAME</a></h1>
35     <p>rxvtperl - rxvt-unicode's embedded perl interpreter</p>
36     <p>
37     </p>
38     <hr />
39     <h1><a name="synopsis">SYNOPSIS</a></h1>
40     <p>* Put your scripts into <em>/opt/rxvt/lib/urxvt/perl-ext/</em>, they will be loaded automatically.</p>
41     <p>* Each script will only be loaded once, even in urxvtd, and will be valid
42     globally.</p>
43     <p>* Scripts are evaluated in a 'use strict' and 'use utf8' environment, and
44     thus must be encoded as UTF-8.</p>
45     <pre>
46     sub on_sel_grab {
47     warn &quot;you selected &quot;, $_[0]-&gt;selection;
48     ()
49     }</pre>
50     <pre>
51     1</pre>
52     <p>
53     </p>
54     <hr />
55     <h1><a name="description">DESCRIPTION</a></h1>
56     <p>
57     </p>
58     <h2><a name="hooks">Hooks</a></h2>
59     <p>The following subroutines can be declared in loaded scripts, and will be called
60     whenever the relevant event happens.</p>
61     <p>All of them must return a boolean value. If it is true, then the event
62     counts as being <em>consumed</em>, and the invocation of other hooks is skipped,
63     and the relevant action might not be carried out by the C++ code.</p>
64     <p>When in doubt, return a false value (preferably <code>()</code>).</p>
65     <dl>
66     <dt><strong><a name="item_on_init__24term">on_init $term</a></strong><br />
67     </dt>
68     <dd>
69     Called after a new terminal object has been initialized, but before
70     windows are created or the command gets run.
71     </dd>
72     <p></p>
73     <dt><strong><a name="item_on_reset__24term">on_reset $term</a></strong><br />
74     </dt>
75     <dd>
76     Called after the screen is ``reset'' for any reason, such as resizing or
77     control sequences. Here is where you can react on changes to size-related
78     variables.
79     </dd>
80     <p></p>
81     <dt><strong><a name="item_on_start__24term">on_start $term</a></strong><br />
82     </dt>
83     <dd>
84     Called at the very end of initialisation of a new terminal, just before
85     returning to the mainloop.
86     </dd>
87     <p></p>
88     <dt><strong><a name="item_on_sel_make__24term_2c__24eventtime">on_sel_make $term, $eventtime</a></strong><br />
89     </dt>
90     <dd>
91     Called whenever a selection has been made by the user, but before the
92     selection text is copied, so changes to the beginning, end or type of the
93     selection will be honored.
94     </dd>
95     <dd>
96     <p>Returning a true value aborts selection making by urxvt, in which case you
97     have to make a selection yourself by calling <a href="#item_selection_grab"><code>$term-&gt;selection_grab</code></a>.</p>
98     </dd>
99     <p></p>
100     <dt><strong><a name="item_on_sel_grab__24term_2c__24eventtime">on_sel_grab $term, $eventtime</a></strong><br />
101     </dt>
102     <dd>
103     Called whenever a selection has been copied, but before the selection is
104     requested from the server. The selection text can be queried and changed
105     by calling <a href="#item_selection"><code>$term-&gt;selection</code></a>.
106     </dd>
107     <dd>
108     <p>Returning a true value aborts selection grabbing. It will still be hilighted.</p>
109     </dd>
110     <p></p>
111     <dt><strong><a name="item_on_focus_in__24term">on_focus_in $term</a></strong><br />
112     </dt>
113     <dd>
114     Called whenever the window gets the keyboard focus, before urxvt does
115     focus in processing.
116     </dd>
117     <p></p>
118     <dt><strong><a name="item_on_focus_out__24term">on_focus_out $term</a></strong><br />
119     </dt>
120     <dd>
121     Called wheneever the window loses keyboard focus, before urxvt does focus
122     out processing.
123     </dd>
124     <p></p>
125     <dt><strong><a name="item_on_view_change__24term_2c__24offset">on_view_change $term, $offset</a></strong><br />
126     </dt>
127     <dd>
128     Called whenever the view offset changes, i..e the user or program
129     scrolls. Offset <code>0</code> means display the normal terminal, positive values
130     show this many lines of scrollback.
131     </dd>
132     <p></p>
133     <dt><strong><a name="item_on_scroll_back__24term_2c__24lines_2c__24saved">on_scroll_back $term, $lines, $saved</a></strong><br />
134     </dt>
135     <dd>
136     Called whenever lines scroll out of the terminal area into the scrollback
137     buffer. <code>$lines</code> is the number of lines scrolled out and may be larger
138     than the scroll back buffer or the terminal.
139     </dd>
140     <dd>
141     <p>It is called before lines are scrolled out (so rows 0 .. min ($lines - 1,
142     $nrow - 1) represent the lines to be scrolled out). <code>$saved</code> is the total
143     number of lines that will be in the scrollback buffer.</p>
144     </dd>
145     <p></p>
146     <dt><strong><a name="item_on_tty_activity__24term__2anyi_2a">on_tty_activity $term *NYI*</a></strong><br />
147     </dt>
148     <dd>
149     Called whenever the <code>program(s)</code> running in the urxvt window send output.
150     </dd>
151     <p></p>
152     <dt><strong><a name="item_on_refresh_begin__24term">on_refresh_begin $term</a></strong><br />
153     </dt>
154     <dd>
155     Called just before the screen gets redrawn. Can be used for overlay
156     or similar effects by modify terminal contents in refresh_begin, and
157     restoring them in refresh_end. The built-in overlay and selection display
158     code is run after this hook, and takes precedence.
159     </dd>
160     <p></p>
161     <dt><strong><a name="item_on_refresh_end__24term">on_refresh_end $term</a></strong><br />
162     </dt>
163     <dd>
164     Called just after the screen gets redrawn. See <code>on_refresh_begin</code>.
165     </dd>
166     <p></p></dl>
167     <p>
168     </p>
169     <h2><a name="functions_in_the_urxvt_package">Functions in the <code>urxvt</code> Package</a></h2>
170     <dl>
171     <dt><strong><a name="item_urxvt_3a_3afatal__24errormessage">urxvt::fatal $errormessage</a></strong><br />
172     </dt>
173     <dd>
174     Fatally aborts execution with the given error message. Avoid at all
175     costs! The only time this is acceptable is when the terminal process
176     starts up.
177     </dd>
178     <p></p>
179     <dt><strong><a name="item_urxvt_3a_3awarn__24string">urxvt::warn $string</a></strong><br />
180     </dt>
181     <dd>
182     Calls <code>rxvt_warn</code> witht eh given string which should not include a
183     newline. The module also overwrites the <code>warn</code> builtin with a function
184     that calls this function.
185     </dd>
186     <dd>
187     <p>Using this function has the advantage that its output ends up in the
188     correct place, e.g. on stderr of the connecting urxvtc client.</p>
189     </dd>
190     <p></p>
191     <dt><strong><a name="item__24cellwidth__3d_urxvt_3a_3awcswidth__24string">$cellwidth = urxvt::wcswidth $string</a></strong><br />
192     </dt>
193     <dd>
194     Returns the number of screen-cells this string would need. Correctly
195     accounts for wide and combining characters.
196     </dd>
197     <p></p>
198     <dt><strong><a name="item__24time__3d_urxvt_3a_3anow">$time = urxvt::NOW</a></strong><br />
199     </dt>
200     <dd>
201     Returns the ``current time'' (as per the event loop).
202     </dd>
203     <p></p></dl>
204     <p>
205     </p>
206     <h2><a name="the_urxvt__term_class">The <code>urxvt::term</code> Class</a></h2>
207     <dl>
208     <dt><strong><a name="item_selection_mark">($row, $col) = $term-&gt;selection_mark ([$row, $col])</a></strong><br />
209     </dt>
210     <dt><strong><a name="item_selection_beg">($row, $col) = $term-&gt;selection_beg ([$row, $col])</a></strong><br />
211     </dt>
212     <dt><strong><a name="item_selection_end">($row, $col) = $term-&gt;selection_end ([$row, $col])</a></strong><br />
213     </dt>
214     <dd>
215     Return the current values of the selection mark, begin or end positions,
216     and optionally set them to new values.
217     </dd>
218     <p></p>
219     <dt><strong><a name="item_selection_grab">$success = $term-&gt;selection_grab ($eventtime)</a></strong><br />
220     </dt>
221     <dd>
222     Try to request the primary selection from the server (for example, as set
223     by the next method).
224     </dd>
225     <p></p>
226     <dt><strong><a name="item_selection">$oldtext = $term-&gt;selection ([$newtext])</a></strong><br />
227     </dt>
228     <dd>
229     Return the current selection text and optionally replace it by <code>$newtext</code>.
230     </dd>
231     <p></p>
232     <dt><strong><a name="item_scr_overlay">$term-&gt;scr_overlay ($x, $y, $text)</a></strong><br />
233     </dt>
234     <dd>
235     Create a simple multi-line overlay box. See the next method for details.
236     </dd>
237     <p></p>
238     <dt><strong><a name="item_scr_overlay_new">$term-&gt;scr_overlay_new ($x, $y, $width, $height)</a></strong><br />
239     </dt>
240     <dd>
241     Create a new (empty) overlay at the given position with the given
242     width/height. A border will be put around the box. If either <code>$x</code> or
243     <code>$y</code> is negative, then this is counted from the right/bottom side,
244     respectively.
245     </dd>
246     <p></p>
247     <dt><strong><a name="item_scr_overlay_off">$term-&gt;scr_overlay_off</a></strong><br />
248     </dt>
249     <dd>
250     Switch the overlay off again.
251     </dd>
252     <p></p>
253     <dt><strong><a name="item_scr_overlay_set_char">$term-&gt;scr_overlay_set_char ($x, $y, $char, $rend = OVERLAY_RSTYLE)</a></strong><br />
254     </dt>
255     <dd>
256     Put a single character (specified numerically) at the given overlay
257     position.
258     </dd>
259     <p></p>
260     <dt><strong><a name="item_scr_overlay_set">$term-&gt;scr_overlay_set ($x, $y, $text)</a></strong><br />
261     </dt>
262     <dd>
263     Write a string at the given position into the overlay.
264     </dd>
265     <p></p></dl>
266     <p>
267     </p>
268     <h2><a name="the_urxvt__timer_class">The <code>urxvt::timer</code> Class</a></h2>
269     <p>This class implements timer watchers/events. Time is represented as a
270     fractional number of seconds since the epoch. Example:</p>
271     <pre>
272     # create a digital clock display in upper right corner
273     $term-&gt;{timer} = urxvt::timer
274     -&gt;new
275     -&gt;start (urxvt::NOW)
276     -&gt;cb (sub {
277     my ($timer) = @_;
278     my $time = $timer-&gt;at;
279     $timer-&gt;start ($time + 1);
280     $self-&gt;scr_overlay (-1, 0,
281     POSIX::strftime &quot;%H:%M:%S&quot;, localtime $time);
282     });</pre>
283     <dl>
284     <dt><strong><a name="item__24timer__3d_new_urxvt_3a_3atimer">$timer = new urxvt::timer</a></strong><br />
285     </dt>
286     <dd>
287     Create a new timer object in stopped state.
288     </dd>
289     <p></p>
290     <dt><strong><a name="item_cb">$timer = $timer-&gt;cb (sub { my ($timer) = @_; ... })</a></strong><br />
291     </dt>
292     <dd>
293     Set the callback to be called when the timer triggers.
294     </dd>
295     <p></p>
296     <dt><strong><a name="item_at">$tstamp = $timer-&gt;at</a></strong><br />
297     </dt>
298     <dd>
299     Return the time this watcher will fire next.
300     </dd>
301     <p></p>
302     <dt><strong><a name="item_set">$timer = $timer-&gt;set ($tstamp)</a></strong><br />
303     </dt>
304     <dd>
305     Set the time the event is generated to $tstamp.
306     </dd>
307     <p></p>
308     <dt><strong><a name="item_start">$timer = $timer-&gt;start</a></strong><br />
309     </dt>
310     <dd>
311     Start the timer.
312     </dd>
313     <p></p>
314     <dt><strong>$timer = $timer-&gt;start ($tstamp)</strong><br />
315     </dt>
316     <dd>
317     Set the event trigger time to <code>$tstamp</code> and start the timer.
318     </dd>
319     <p></p>
320     <dt><strong><a name="item_stop">$timer = $timer-&gt;stop</a></strong><br />
321     </dt>
322     <dd>
323     Stop the timer.
324     </dd>
325     <p></p></dl>
326     <p>
327     </p>
328     <h2><a name="the_urxvt__iow_class">The <code>urxvt::iow</code> Class</a></h2>
329     <p>This class implements io watchers/events. Example:</p>
330     <pre>
331     $term-&gt;{socket} = ...
332     $term-&gt;{iow} = urxvt::iow
333     -&gt;new
334     -&gt;fd (fileno $term-&gt;{socket})
335     -&gt;events (1) # wait for read data
336     -&gt;start
337     -&gt;cb (sub {
338     my ($iow, $revents) = @_;
339     # $revents must be 1 here, no need to check
340     sysread $term-&gt;{socket}, my $buf, 8192
341     or end-of-file;
342     });</pre>
343     <dl>
344     <dt><strong><a name="item__24iow__3d_new_urxvt_3a_3aiow">$iow = new urxvt::iow</a></strong><br />
345     </dt>
346     <dd>
347     Create a new io watcher object in stopped state.
348     </dd>
349     <p></p>
350     <dt><strong>$iow = $iow-&gt;cb (sub { my ($iow, $reventmask) = @_; ... })</strong><br />
351     </dt>
352     <dd>
353     Set the callback to be called when io events are triggered. <code>$reventmask</code>
354     is a bitset as described in the <a href="#item_events"><code>events</code></a> method.
355     </dd>
356     <p></p>
357     <dt><strong><a name="item_fd">$iow = $iow-&gt;fd ($fd)</a></strong><br />
358     </dt>
359     <dd>
360     Set the filedescriptor (not handle) to watch.
361     </dd>
362     <p></p>
363     <dt><strong><a name="item_events">$iow = $iow-&gt;events ($eventmask)</a></strong><br />
364     </dt>
365     <dd>
366     Set the event mask to watch. Bit #0 (value <code>1</code>) enables watching for read
367     data, Bit #1 (value <code>2</code>) enables watching for write data.
368     </dd>
369     <p></p>
370     <dt><strong>$iow = $iow-&gt;start</strong><br />
371     </dt>
372     <dd>
373     Start watching for requested events on the given handle.
374     </dd>
375     <p></p>
376     <dt><strong>$iow = $iow-&gt;stop</strong><br />
377     </dt>
378     <dd>
379     Stop watching for events on the given filehandle.
380     </dd>
381     <p></p></dl>
382     <p>
383     </p>
384     <hr />
385     <h1><a name="author">AUTHOR</a></h1>
386     <pre>
387     Marc Lehmann &lt;pcg@goof.com&gt;
388     <a href="http://software.schmorp.de/pkg/rxvt-unicode">http://software.schmorp.de/pkg/rxvt-unicode</a></pre>
389    
390     </body>
391    
392     </html>