ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.3
Committed: Mon Jan 2 21:41:51 2006 UTC (18 years, 6 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.2: +13 -7 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2     rxvtperl - rxvt-unicode's embedded perl interpreter
3    
4     SYNOPSIS
5 root 1.3 # create a file grab_test in $HOME:
6 root 1.1
7     sub on_sel_grab {
8     warn "you selected ", $_[0]->selection;
9     ()
10     }
11    
12 root 1.3 # start a rxvt using it:
13    
14     rxvt --perl-lib $HOME -pe grab_test
15 root 1.1
16     DESCRIPTION
17 root 1.2 Everytime a terminal object gets created, scripts specified via the
18 root 1.3 "perl" resource are loaded and associated with it.
19    
20     Scripts are compiled in a 'use strict' and 'use utf8' environment, and
21     thus must be encoded as UTF-8.
22 root 1.1
23     Each script will only ever be loaded once, even in rxvtd, where scripts
24 root 1.2 will be shared (But not enabled) for all terminals.
25 root 1.1
26     General API Considerations
27     All objects (such as terminals, time watchers etc.) are typical
28     reference-to-hash objects. The hash can be used to store anything you
29     like. All members starting with an underscore (such as "_ptr" or
30     "_hook") are reserved for internal uses and must not be accessed or
31     modified).
32    
33     When objects are destroyed on the C++ side, the perl object hashes are
34     emptied, so its best to store related objects such as time watchers and
35     the like inside the terminal object so they get destroyed as soon as the
36     terminal is destroyed.
37    
38     Hooks
39     The following subroutines can be declared in loaded scripts, and will be
40     called whenever the relevant event happens.
41    
42     All of them must return a boolean value. If it is true, then the event
43     counts as being *consumed*, and the invocation of other hooks is
44     skipped, and the relevant action might not be carried out by the C++
45     code.
46    
47     When in doubt, return a false value (preferably "()").
48    
49     on_init $term
50     Called after a new terminal object has been initialized, but before
51     windows are created or the command gets run.
52    
53     on_reset $term
54     Called after the screen is "reset" for any reason, such as resizing
55     or control sequences. Here is where you can react on changes to
56     size-related variables.
57    
58     on_start $term
59     Called at the very end of initialisation of a new terminal, just
60     before returning to the mainloop.
61    
62     on_sel_make $term, $eventtime
63     Called whenever a selection has been made by the user, but before
64     the selection text is copied, so changes to the beginning, end or
65     type of the selection will be honored.
66    
67     Returning a true value aborts selection making by urxvt, in which
68     case you have to make a selection yourself by calling
69     "$term->selection_grab".
70    
71     on_sel_grab $term, $eventtime
72     Called whenever a selection has been copied, but before the
73     selection is requested from the server. The selection text can be
74     queried and changed by calling "$term->selection".
75    
76     Returning a true value aborts selection grabbing. It will still be
77     hilighted.
78    
79     on_focus_in $term
80     Called whenever the window gets the keyboard focus, before urxvt
81     does focus in processing.
82    
83     on_focus_out $term
84     Called wheneever the window loses keyboard focus, before urxvt does
85     focus out processing.
86    
87     on_view_change $term, $offset
88     Called whenever the view offset changes, i..e the user or program
89     scrolls. Offset 0 means display the normal terminal, positive values
90     show this many lines of scrollback.
91    
92     on_scroll_back $term, $lines, $saved
93     Called whenever lines scroll out of the terminal area into the
94     scrollback buffer. $lines is the number of lines scrolled out and
95     may be larger than the scroll back buffer or the terminal.
96    
97     It is called before lines are scrolled out (so rows 0 .. min ($lines
98     - 1, $nrow - 1) represent the lines to be scrolled out). $saved is
99     the total number of lines that will be in the scrollback buffer.
100    
101     on_tty_activity $term *NYI*
102     Called whenever the program(s) running in the urxvt window send
103     output.
104    
105     on_refresh_begin $term
106     Called just before the screen gets redrawn. Can be used for overlay
107     or similar effects by modify terminal contents in refresh_begin, and
108     restoring them in refresh_end. The built-in overlay and selection
109     display code is run after this hook, and takes precedence.
110    
111     on_refresh_end $term
112     Called just after the screen gets redrawn. See "on_refresh_begin".
113    
114 root 1.3 on_keyboard_command $term, $string
115     Called whenever the user presses a key combination that has a
116     "perl:string" action bound to it (see description of the keysym
117     resource in the rxvt(1) manpage).
118    
119 root 1.1 Functions in the "urxvt" Package
120     urxvt::fatal $errormessage
121     Fatally aborts execution with the given error message. Avoid at all
122     costs! The only time this is acceptable is when the terminal process
123     starts up.
124    
125     urxvt::warn $string
126     Calls "rxvt_warn" with the given string which should not include a
127     newline. The module also overwrites the "warn" builtin with a
128     function that calls this function.
129    
130     Using this function has the advantage that its output ends up in the
131     correct place, e.g. on stderr of the connecting urxvtc client.
132    
133     $time = urxvt::NOW
134     Returns the "current time" (as per the event loop).
135    
136     The "urxvt::term" Class
137     $value = $term->resource ($name[, $newval])
138     Returns the current resource value associated with a given name and
139     optionally sets a new value. Setting values is most useful in the
140     "init" hook. Unset resources are returned and accepted as "undef".
141    
142     The new value must be properly encoded to a suitable character
143     encoding before passing it to this method. Similarly, the returned
144     value may need to be converted from the used encoding to text.
145    
146     Resource names are as defined in src/rsinc.h. Colours can be
147     specified as resource names of the form "color+<index>", e.g.
148     "color+5". (will likely change).
149    
150     Please note that resource strings will currently only be freed when
151     the terminal is destroyed, so changing options frequently will eat
152     memory.
153    
154     Here is a a likely non-exhaustive list of resource names, not all of
155     which are supported in every build, please see the source to see the
156     actual list:
157    
158     answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
159     borderLess color cursorBlink cursorUnderline cutchars delete_key
160     display_name embed ext_bwidth fade font geometry hold iconName
161     imFont imLocale inputMethod insecure int_bwidth intensityStyles
162 root 1.2 italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier
163     mouseWheelScrollPage name pastableTabs path perl_eval perl_ext
164 root 1.1 perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd
165     reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating
166     scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput
167     scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle
168     shade term_name title transparent transparent_all tripleclickwords
169     utmpInhibit visualBell
170    
171     ($row, $col) = $term->selection_mark ([$row, $col])
172     ($row, $col) = $term->selection_beg ([$row, $col])
173     ($row, $col) = $term->selection_end ([$row, $col])
174     Return the current values of the selection mark, begin or end
175     positions, and optionally set them to new values.
176    
177     $success = $term->selection_grab ($eventtime)
178     Try to request the primary selection from the server (for example,
179     as set by the next method).
180    
181     $oldtext = $term->selection ([$newtext])
182     Return the current selection text and optionally replace it by
183     $newtext.
184    
185     $term->scr_overlay ($x, $y, $text)
186     Create a simple multi-line overlay box. See the next method for
187     details.
188    
189     $term->scr_overlay_new ($x, $y, $width, $height)
190     Create a new (empty) overlay at the given position with the given
191     width/height. A border will be put around the box. If either $x or
192     $y is negative, then this is counted from the right/bottom side,
193     respectively.
194    
195     $term->scr_overlay_off
196     Switch the overlay off again.
197    
198     $term->scr_overlay_set_char ($x, $y, $char, $rend = OVERLAY_RSTYLE)
199     Put a single character (specified numerically) at the given overlay
200     position.
201    
202     $term->scr_overlay_set ($x, $y, $text)
203     Write a string at the given position into the overlay.
204    
205     $cellwidth = $term->strwidth $string
206     Returns the number of screen-cells this string would need. Correctly
207     accounts for wide and combining characters.
208    
209     $octets = $term->locale_encode $string
210     Convert the given text string into the corresponding locale
211     encoding.
212    
213     $string = $term->locale_decode $octets
214     Convert the given locale-encoded octets into a perl string.
215    
216     $term->tt_write ($octets)
217     Write the octets given in $data to the tty (i.e. as program input).
218     To pass characters instead of octets, you should convetr you strings
219     first to the locale-specific encoding using "$term->locale_encode".
220    
221     The "urxvt::timer" Class
222     This class implements timer watchers/events. Time is represented as a
223     fractional number of seconds since the epoch. Example:
224    
225     # create a digital clock display in upper right corner
226     $term->{timer} = urxvt::timer
227     ->new
228     ->start (urxvt::NOW)
229     ->cb (sub {
230     my ($timer) = @_;
231     my $time = $timer->at;
232     $timer->start ($time + 1);
233     $self->scr_overlay (-1, 0,
234     POSIX::strftime "%H:%M:%S", localtime $time);
235     });
236    
237     $timer = new urxvt::timer
238     Create a new timer object in stopped state.
239    
240     $timer = $timer->cb (sub { my ($timer) = @_; ... })
241     Set the callback to be called when the timer triggers.
242    
243     $tstamp = $timer->at
244     Return the time this watcher will fire next.
245    
246     $timer = $timer->set ($tstamp)
247     Set the time the event is generated to $tstamp.
248    
249     $timer = $timer->start
250     Start the timer.
251    
252     $timer = $timer->start ($tstamp)
253     Set the event trigger time to $tstamp and start the timer.
254    
255     $timer = $timer->stop
256     Stop the timer.
257    
258     The "urxvt::iow" Class
259     This class implements io watchers/events. Example:
260    
261     $term->{socket} = ...
262     $term->{iow} = urxvt::iow
263     ->new
264     ->fd (fileno $term->{socket})
265     ->events (1) # wait for read data
266     ->start
267     ->cb (sub {
268     my ($iow, $revents) = @_;
269     # $revents must be 1 here, no need to check
270     sysread $term->{socket}, my $buf, 8192
271     or end-of-file;
272     });
273    
274     $iow = new urxvt::iow
275     Create a new io watcher object in stopped state.
276    
277     $iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })
278     Set the callback to be called when io events are triggered.
279     $reventmask is a bitset as described in the "events" method.
280    
281     $iow = $iow->fd ($fd)
282     Set the filedescriptor (not handle) to watch.
283    
284     $iow = $iow->events ($eventmask)
285     Set the event mask to watch. Bit #0 (value 1) enables watching for
286     read data, Bit #1 (value 2) enables watching for write data.
287    
288     $iow = $iow->start
289     Start watching for requested events on the given handle.
290    
291     $iow = $iow->stop
292     Stop watching for events on the given filehandle.
293    
294     ENVIRONMENT
295     URXVT_PERL_VERBOSITY
296     This variable controls the verbosity level of the perl extension. Higher
297     numbers indicate more verbose output.
298    
299     0 - only fatal messages
300     3 - script loading and management
301     10 - all events received
302    
303     AUTHOR
304     Marc Lehmann <pcg@goof.com>
305     http://software.schmorp.de/pkg/rxvt-unicode
306