ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.17
Committed: Tue Jan 10 04:26:54 2006 UTC (18 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.16: +84 -22 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.13 Everytime a terminal object gets created, extension scripts specified
18     via the "perl" resource are loaded and associated with it.
19 root 1.3
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.5 will be shared (but not enabled) for all terminals.
25 root 1.1
26 root 1.5 Prepackaged Extensions
27 root 1.4 This section describes the extensiosn delivered with this version. You
28     can find them in /opt/rxvt/lib/urxvt/perl/.
29    
30     You can activate them like this:
31    
32     rxvt -pe <extensionname>
33    
34 root 1.14 selection (enabled by default)
35 root 1.8 Intelligent selection. This extension tries to be more intelligent
36     when the user extends selections (double-click). Right now, it tries
37     to select urls and complete shell-quoted arguments, which is very
38     convenient, too, if your ls supports "--quoting-style=shell".
39 root 1.7
40     It also offers the following bindable event:
41 root 1.4
42     rot13
43     Rot-13 the selection when activated. Used via keyboard trigger:
44    
45     URxvt.keysym.C-M-r: perl:selection:rot13
46    
47 root 1.14 option-popup (enabled by default)
48 root 1.15 Binds a popup menu to Ctrl-Button2 that lets you toggle (some)
49 root 1.14 options at runtime.
50    
51 root 1.15 selection-popup (enabled by default)
52     Binds a popup menu to Ctrl-Button3 that lets you convert the
53     selection text into various other formats/action.
54    
55 root 1.17 searchable-scrollback<hotkey> (enabled by default)
56     Adds regex search functionality to the scrollback buffer, triggered
57     by a hotkey (default: "M-s"). When in search mode, normal terminal
58     input/output is suspended.
59    
60     "/" starts an incremental regex search, "n" searches further, "p" or
61     "N" jump to the previous match, "G" jumps to the bottom and clears
62     the history, "enter" leaves search mode at the current position and
63     "escape" returns to the original position.
64    
65 root 1.4 digital-clock
66 root 1.6 Displays a digital clock using the built-in overlay.
67    
68 root 1.12 mark-urls
69     Uses per-line display filtering ("on_line_update") to underline
70     urls.
71    
72     block-graphics-to-ascii
73     A not very useful example of filtering all text output to the
74     terminal, by replacing all line-drawing characters (U+2500 ..
75     U+259F) by a similar-looking ascii character.
76    
77 root 1.6 example-refresh-hooks
78 root 1.4 Displays a very simple digital clock in the upper right corner of
79     the window. Illustrates overwriting the refresh callbacks to create
80     your own overlays or changes.
81    
82 root 1.1 General API Considerations
83     All objects (such as terminals, time watchers etc.) are typical
84     reference-to-hash objects. The hash can be used to store anything you
85     like. All members starting with an underscore (such as "_ptr" or
86 root 1.7 "_hook") are reserved for internal uses and MUST NOT be accessed or
87 root 1.1 modified).
88    
89     When objects are destroyed on the C++ side, the perl object hashes are
90     emptied, so its best to store related objects such as time watchers and
91     the like inside the terminal object so they get destroyed as soon as the
92     terminal is destroyed.
93    
94 root 1.12 Argument names also often indicate the type of a parameter. Here are
95     some hints on what they mean:
96    
97     $text
98     Rxvt-unicodes special way of encoding text, where one "unicode"
99     character always represents one screen cell. See row_t for a
100     discussion of this format.
101    
102     $string
103     A perl text string, with an emphasis on *text*. It can store all
104     unicode characters and is to be distinguished with text encoded in a
105     specific encoding (often locale-specific) and binary data.
106    
107     $octets
108     Either binary data or - more common - a text string encoded in a
109     locale-specific way.
110    
111 root 1.17 Extension Objects
112     Very perl extension is a perl class. A separate perl object is created
113     for each terminal and each extension and passed as the first parameter
114     to hooks. So extensions can use their $self object without having to
115     think about other extensions, with the exception of methods and members
116     that begin with an underscore character "_": these are reserved for
117     internal use.
118    
119     Although it isn't a "urxvt::term" object, you can call all methods of
120     the "urxvt::term" class on this object.
121    
122     It has the following methods and data members:
123    
124     $urxvt_term = $self->{term}
125     Returns the "urxvt::term" object associated with this instance of
126     the extension. This member *must not* be changed in any way.
127    
128     $self->enable ($hook_name => $cb, [$hook_name => $cb..])
129     Dynamically enable the given hooks (named without the "on_" prefix)
130     for this extension, replacing any previous hook. This is useful when
131     you want to overwrite time-critical hooks only temporarily.
132    
133     $self->disable ($hook_name[, $hook_name..])
134     Dynamically disable the given hooks.
135    
136 root 1.1 Hooks
137 root 1.12 The following subroutines can be declared in extension files, and will
138     be called whenever the relevant event happens.
139 root 1.1
140 root 1.17 The first argument passed to them is an extension oject as described in
141     the in the "Extension Objects" section.
142 root 1.7
143 root 1.17 All of these hooks must return a boolean value. If it is true, then the
144     event counts as being *consumed*, and the invocation of other hooks is
145 root 1.1 skipped, and the relevant action might not be carried out by the C++
146     code.
147    
148 root 1.17 *When in doubt, return a false value (preferably "()").*
149 root 1.1
150     on_init $term
151     Called after a new terminal object has been initialized, but before
152 root 1.12 windows are created or the command gets run. Most methods are unsafe
153     to call or deliver senseless data, as terminal size and other
154     characteristics have not yet been determined. You can safely query
155     and change resources, though.
156 root 1.1
157     on_reset $term
158     Called after the screen is "reset" for any reason, such as resizing
159     or control sequences. Here is where you can react on changes to
160     size-related variables.
161    
162     on_start $term
163     Called at the very end of initialisation of a new terminal, just
164     before returning to the mainloop.
165    
166     on_sel_make $term, $eventtime
167     Called whenever a selection has been made by the user, but before
168     the selection text is copied, so changes to the beginning, end or
169     type of the selection will be honored.
170    
171     Returning a true value aborts selection making by urxvt, in which
172     case you have to make a selection yourself by calling
173     "$term->selection_grab".
174    
175     on_sel_grab $term, $eventtime
176     Called whenever a selection has been copied, but before the
177     selection is requested from the server. The selection text can be
178     queried and changed by calling "$term->selection".
179    
180     Returning a true value aborts selection grabbing. It will still be
181     hilighted.
182    
183 root 1.7 on_sel_extend $term
184     Called whenever the user tries to extend the selection (e.g. with a
185     double click) and is either supposed to return false (normal
186     operation), or should extend the selection itelf and return true to
187     suppress the built-in processing.
188    
189     See the selection example extension.
190    
191 root 1.1 on_view_change $term, $offset
192     Called whenever the view offset changes, i..e the user or program
193     scrolls. Offset 0 means display the normal terminal, positive values
194     show this many lines of scrollback.
195    
196     on_scroll_back $term, $lines, $saved
197     Called whenever lines scroll out of the terminal area into the
198     scrollback buffer. $lines is the number of lines scrolled out and
199     may be larger than the scroll back buffer or the terminal.
200    
201     It is called before lines are scrolled out (so rows 0 .. min ($lines
202     - 1, $nrow - 1) represent the lines to be scrolled out). $saved is
203     the total number of lines that will be in the scrollback buffer.
204    
205 root 1.9 on_osc_seq $term, $string
206     Called whenever the ESC ] 777 ; string ST command sequence (OSC =
207     operating system command) is processed. Cursor position and other
208     state information is up-to-date when this happens. For
209     interoperability, the string should start with the extension name
210     and a colon, to distinguish it from commands for other extensions,
211     and this might be enforced in the future.
212    
213     Be careful not ever to trust (in a security sense) the data you
214     receive, as its source can not easily be controleld (e-mail content,
215     messages from other users on the same system etc.).
216    
217 root 1.12 on_add_lines $term, $string
218     Called whenever text is about to be output, with the text as
219     argument. You can filter/change and output the text yourself by
220     returning a true value and calling "$term->scr_add_lines" yourself.
221     Please note that this might be very slow, however, as your hook is
222     called for all text being output.
223    
224 root 1.17 on_tt_write $term, $octets
225     Called whenever some data is written to the tty/pty and can be used
226     to suppress or filter tty input.
227    
228 root 1.12 on_line_update $term, $row
229     Called whenever a line was updated or changed. Can be used to filter
230     screen output (e.g. underline urls or other useless stuff). Only
231     lines that are being shown will be filtered, and, due to performance
232     reasons, not always immediately.
233    
234     The row number is always the topmost row of the line if the line
235     spans multiple rows.
236    
237     Please note that, if you change the line, then the hook might get
238     called later with the already-modified line (e.g. if unrelated parts
239     change), so you cannot just toggle rendition bits, but only set
240     them.
241    
242 root 1.1 on_refresh_begin $term
243     Called just before the screen gets redrawn. Can be used for overlay
244     or similar effects by modify terminal contents in refresh_begin, and
245     restoring them in refresh_end. The built-in overlay and selection
246     display code is run after this hook, and takes precedence.
247    
248     on_refresh_end $term
249     Called just after the screen gets redrawn. See "on_refresh_begin".
250    
251 root 1.3 on_keyboard_command $term, $string
252     Called whenever the user presses a key combination that has a
253     "perl:string" action bound to it (see description of the keysym
254     resource in the rxvt(1) manpage).
255    
256 root 1.13 on_focus_in $term
257     Called whenever the window gets the keyboard focus, before
258     rxvt-unicode does focus in processing.
259    
260     on_focus_out $term
261     Called wheneever the window loses keyboard focus, before
262     rxvt-unicode does focus out processing.
263    
264 root 1.17 on_key_press $term, $event, $keysym, $octets
265     on_key_release $term, $event, $keysym
266 root 1.12 on_button_press $term, $event
267     on_button_release $term, $event
268     on_motion_notify $term, $event
269 root 1.13 on_map_notify $term, $event
270     on_unmap_notify $term, $event
271 root 1.12 Called whenever the corresponding X event is received for the
272     terminal If the hook returns true, then the even will be ignored by
273     rxvt-unicode.
274    
275     The event is a hash with most values as named by Xlib (see the
276     XEvent manpage), with the additional members "row" and "col", which
277     are the row and column under the mouse cursor.
278    
279     "on_key_press" additionally receives the string rxvt-unicode would
280     output, if any, in locale-specific encoding.
281    
282     subwindow.
283    
284 root 1.7 Variables in the "urxvt" Package
285     $urxvt::TERM
286 root 1.12 The current terminal. This variable stores the current "urxvt::term"
287     object, whenever a callback/hook is executing.
288 root 1.7
289 root 1.1 Functions in the "urxvt" Package
290 root 1.12 $term = new urxvt [arg...]
291     Creates a new terminal, very similar as if you had started it with
292     "system $binfile, arg...". Croaks (and probably outputs an error
293     message) if the new instance couldn't be created. Returns "undef" if
294     the new instance didn't initialise perl, and the terminal object
295     otherwise. The "init" and "start" hooks will be called during the
296     call.
297    
298 root 1.1 urxvt::fatal $errormessage
299     Fatally aborts execution with the given error message. Avoid at all
300     costs! The only time this is acceptable is when the terminal process
301     starts up.
302    
303     urxvt::warn $string
304     Calls "rxvt_warn" with the given string which should not include a
305     newline. The module also overwrites the "warn" builtin with a
306     function that calls this function.
307    
308     Using this function has the advantage that its output ends up in the
309     correct place, e.g. on stderr of the connecting urxvtc client.
310    
311 root 1.16 $is_safe = urxvt::safe
312     Returns true when it is safe to do potentially unsafe things, such
313     as evaluating perl code specified by the user. This is true when
314     urxvt was started setuid or setgid.
315    
316 root 1.1 $time = urxvt::NOW
317     Returns the "current time" (as per the event loop).
318    
319 root 1.13 urxvt::CurrentTime
320     urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask,
321     Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask,
322     Button5Mask, AnyModifier
323 root 1.14 Various constants for use in X calls and event processing.
324 root 1.13
325 root 1.6 RENDITION
326     Rendition bitsets contain information about colour, font, font styles
327     and similar information for each screen cell.
328    
329     The following "macros" deal with changes in rendition sets. You should
330     never just create a bitset, you should always modify an existing one, as
331     they contain important information required for correct operation of
332     rxvt-unicode.
333    
334     $rend = urxvt::DEFAULT_RSTYLE
335     Returns the default rendition, as used when the terminal is starting
336     up or being reset. Useful as a base to start when creating
337     renditions.
338    
339     $rend = urxvt::OVERLAY_RSTYLE
340     Return the rendition mask used for overlays by default.
341    
342     $rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline
343     Return the bit that enabled bold, italic, blink, reverse-video and
344     underline, respectively. To enable such a style, just logically OR
345     it into the bitset.
346    
347     $foreground = urxvt::GET_BASEFG $rend
348     $background = urxvt::GET_BASEBG $rend
349     Return the foreground/background colour index, respectively.
350    
351     $rend = urxvt::SET_FGCOLOR ($rend, $new_colour)
352     $rend = urxvt::SET_BGCOLOR ($rend, $new_colour)
353     Replace the foreground/background colour in the rendition mask with
354     the specified one.
355    
356     $value = urxvt::GET_CUSTOM ($rend)
357     Return the "custom" value: Every rendition has 5 bits for use by
358     extensions. They can be set and changed as you like and are
359     initially zero.
360    
361     $rend = urxvt::SET_CUSTOM ($rend, $new_value)
362     Change the custom value.
363    
364 root 1.14 The "urxvt::anyevent" Class
365     The sole purpose of this class is to deliver an interface to the
366     "AnyEvent" module - any module using it will work inside urxvt without
367     further work. The only exception is that you cannot wait on condition
368     variables, but non-blocking condvar use is ok. What this means is that
369     you cannot use blocking APIs, but the non-blocking variant should work.
370    
371 root 1.1 The "urxvt::term" Class
372 root 1.12 $term->destroy
373     Destroy the terminal object (close the window, free resources etc.).
374    
375 root 1.13 $isset = $term->option ($optval[, $set])
376     Returns true if the option specified by $optval is enabled, and
377     optionally change it. All option values are stored by name in the
378     hash %urxvt::OPTION. Options not enabled in this binary are not in
379     the hash.
380    
381     Here is a a likely non-exhaustive list of option names, please see
382     the source file /src/optinc.h to see the actual list:
383    
384     borderLess console cursorBlink cursorUnderline hold iconic insecure
385     intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
386     pastableTabs pointerBlank reverseVideo scrollBar scrollBar_floating
387     scrollBar_right scrollTtyKeypress scrollTtyOutput scrollWithBuffer
388     secondaryScreen secondaryScroll skipBuiltinGlyphs transparent
389     tripleclickwords utmpInhibit visualBell
390    
391 root 1.1 $value = $term->resource ($name[, $newval])
392     Returns the current resource value associated with a given name and
393     optionally sets a new value. Setting values is most useful in the
394     "init" hook. Unset resources are returned and accepted as "undef".
395    
396     The new value must be properly encoded to a suitable character
397     encoding before passing it to this method. Similarly, the returned
398     value may need to be converted from the used encoding to text.
399    
400     Resource names are as defined in src/rsinc.h. Colours can be
401     specified as resource names of the form "color+<index>", e.g.
402     "color+5". (will likely change).
403    
404     Please note that resource strings will currently only be freed when
405     the terminal is destroyed, so changing options frequently will eat
406     memory.
407    
408     Here is a a likely non-exhaustive list of resource names, not all of
409 root 1.13 which are supported in every build, please see the source file
410     /src/rsinc.h to see the actual list:
411 root 1.1
412     answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
413     borderLess color cursorBlink cursorUnderline cutchars delete_key
414     display_name embed ext_bwidth fade font geometry hold iconName
415     imFont imLocale inputMethod insecure int_bwidth intensityStyles
416 root 1.2 italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier
417 root 1.10 mouseWheelScrollPage name pastableTabs path perl_eval perl_ext_1 perl_ext_2
418 root 1.1 perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd
419     reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating
420     scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput
421     scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle
422     shade term_name title transparent transparent_all tripleclickwords
423     utmpInhibit visualBell
424    
425 root 1.17 $success = $term->parse_keysym ($keysym_spec, $command_string)
426     Adds a keymap translation exactly as specified via a resource. See
427     the "keysym" resource in the rxvt(1) manpage.
428    
429 root 1.12 $rend = $term->rstyle ([$new_rstyle])
430     Return and optionally change the current rendition. Text that is
431     output by the terminal application will use this style.
432 root 1.11
433     ($row, $col) = $term->screen_cur ([$row, $col])
434     Return the current coordinates of the text cursor position and
435     optionally set it (which is usually bad as applications don't expect
436     that).
437    
438 root 1.1 ($row, $col) = $term->selection_mark ([$row, $col])
439     ($row, $col) = $term->selection_beg ([$row, $col])
440     ($row, $col) = $term->selection_end ([$row, $col])
441     Return the current values of the selection mark, begin or end
442     positions, and optionally set them to new values.
443    
444     $success = $term->selection_grab ($eventtime)
445     Try to request the primary selection from the server (for example,
446     as set by the next method).
447    
448     $oldtext = $term->selection ([$newtext])
449     Return the current selection text and optionally replace it by
450     $newtext.
451    
452 root 1.17 $term->overlay_simple ($x, $y, $text)
453     Create a simple multi-line overlay box. See the next method for
454     details.
455 root 1.6
456     $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
457 root 1.1 Create a new (empty) overlay at the given position with the given
458 root 1.6 width/height. $rstyle defines the initial rendition style (default:
459     "OVERLAY_RSTYLE").
460    
461     If $border is 2 (default), then a decorative border will be put
462     around the box.
463    
464     If either $x or $y is negative, then this is counted from the
465     right/bottom side, respectively.
466    
467     This method returns an urxvt::overlay object. The overlay will be
468     visible as long as the perl object is referenced.
469 root 1.1
470 root 1.7 The methods currently supported on "urxvt::overlay" objects are:
471 root 1.6
472 root 1.7 $overlay->set ($x, $y, $text, $rend)
473     Similar to "$term->ROW_t" and "$term->ROW_r" in that it puts
474     text in rxvt-unicode's special encoding and an array of
475     rendition values at a specific position inside the overlay.
476    
477     $overlay->hide
478     If visible, hide the overlay, but do not destroy it.
479    
480     $overlay->show
481     If hidden, display the overlay again.
482 root 1.1
483 root 1.13 $popup = $term->popup ($event)
484     Creates a new "urxvt::popup" object that implements a popup menu.
485     The $event *must* be the event causing the menu to pop up (a button
486     event, currently).
487    
488 root 1.12 $cellwidth = $term->strwidth ($string)
489 root 1.1 Returns the number of screen-cells this string would need. Correctly
490     accounts for wide and combining characters.
491    
492 root 1.12 $octets = $term->locale_encode ($string)
493 root 1.1 Convert the given text string into the corresponding locale
494     encoding.
495    
496 root 1.12 $string = $term->locale_decode ($octets)
497 root 1.1 Convert the given locale-encoded octets into a perl string.
498    
499 root 1.17 $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
500     XORs the rendition values in the given span with the provided value
501     (default: "RS_RVid"). Useful in refresh hooks to provide effects
502     similar to the selection.
503    
504     $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[,
505     $rstyle2]])
506     Similar to "scr_xor_span", but xors a rectangle instead. Trailing
507     whitespace will additionally be xored with the $rstyle2, which
508     defaults to "RS_RVid | RS_Uline", which removes reverse video again
509     and underlines it instead.
510    
511     $term->scr_bell
512     Ring the bell!
513    
514 root 1.12 $term->scr_add_lines ($string)
515     Write the given text string to the screen, as if output by the
516     application running inside the terminal. It may not contain command
517     sequences (escape codes), but is free to use line feeds, carriage
518     returns and tabs. The string is a normal text string, not in
519     locale-dependent encoding.
520    
521     Normally its not a good idea to use this function, as programs might
522     be confused by changes in cursor position or scrolling. Its useful
523     inside a "on_add_lines" hook, though.
524    
525     $term->cmd_parse ($octets)
526     Similar to "scr_add_lines", but the argument must be in the
527     locale-specific encoding of the terminal and can contain command
528     sequences (escape codes) that will be interpreted.
529    
530 root 1.1 $term->tt_write ($octets)
531     Write the octets given in $data to the tty (i.e. as program input).
532 root 1.4 To pass characters instead of octets, you should convert your
533     strings first to the locale-specific encoding using
534     "$term->locale_encode".
535    
536 root 1.17 $old_events = $term->pty_ev_events ([$new_events])
537     Replaces the event mask of the pty watcher by the given event mask.
538     Can be used to suppress input and output handling to the pty/tty.
539     See the description of "urxvt::timer->events". Make sure to always
540     restore the previous value.
541    
542 root 1.12 $windowid = $term->parent
543     Return the window id of the toplevel window.
544    
545     $windowid = $term->vt
546     Return the window id of the terminal window.
547    
548 root 1.11 $window_width = $term->width
549     $window_height = $term->height
550     $font_width = $term->fwidth
551     $font_height = $term->fheight
552     $font_ascent = $term->fbase
553     $terminal_rows = $term->nrow
554     $terminal_columns = $term->ncol
555     $has_focus = $term->focus
556     $is_mapped = $term->mapped
557     $max_scrollback = $term->saveLines
558     $nrow_plus_saveLines = $term->total_rows
559     $lines_in_scrollback = $term->nsaved
560     Return various integers describing terminal characteristics.
561 root 1.4
562 root 1.17 $lc_ctype = $term->locale
563     Returns the LC_CTYPE category string used by this rxvt-unicode.
564    
565     $x_display = $term->display_id
566     Return the DISPLAY used by rxvt-unicode.
567    
568 root 1.13 $modifiermask = $term->ModLevel3Mask
569     $modifiermask = $term->ModMetaMask
570     $modifiermask = $term->ModNumLockMask
571     Return the modifier masks corresponding to the "ISO Level 3 Shift"
572     (often AltGr), the meta key (often Alt) and the num lock key, if
573     applicable.
574    
575 root 1.4 $view_start = $term->view_start ([$newvalue])
576     Returns the negative row number of the topmost line. Minimum value
577     is 0, which displays the normal terminal contents. Larger values
578     scroll this many lines into the scrollback buffer.
579    
580     $term->want_refresh
581     Requests a screen refresh. At the next opportunity, rxvt-unicode
582     will compare the on-screen display with its stored representation.
583     If they differ, it redraws the differences.
584    
585     Used after changing terminal contents to display them.
586    
587     $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
588     Returns the text of the entire row with number $row_number. Row 0 is
589     the topmost terminal line, row "$term->$ncol-1" is the bottommost
590     terminal line. The scrollback buffer starts at line -1 and extends
591 root 1.7 to line "-$term->nsaved". Nothing will be returned if a nonexistent
592     line is requested.
593 root 1.4
594     If $new_text is specified, it will replace characters in the current
595     line, starting at column $start_col (default 0), which is useful to
596 root 1.6 replace only parts of a line. The font index in the rendition will
597 root 1.4 automatically be updated.
598    
599     $text is in a special encoding: tabs and wide characters that use
600     more than one cell when displayed are padded with urxvt::NOCHAR
601     characters ("chr 65535"). Characters with combining characters and
602     other characters that do not fit into the normal tetx encoding will
603     be replaced with characters in the private use area.
604    
605     You have to obey this encoding when changing text. The advantage is
606     that "substr" and similar functions work on screen cells and not on
607     characters.
608    
609     The methods "$term->special_encode" and "$term->special_decode" can
610     be used to convert normal strings into this encoding and vice versa.
611    
612     $rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])
613     Like "$term->ROW_t", but returns an arrayref with rendition bitsets.
614     Rendition bitsets contain information about colour, font, font
615     styles and similar information. See also "$term->ROW_t".
616    
617     When setting rendition, the font mask will be ignored.
618    
619 root 1.6 See the section on RENDITION, above.
620 root 1.4
621     $length = $term->ROW_l ($row_number[, $new_length])
622     Returns the number of screen cells that are in use ("the line
623 root 1.7 length"). Unlike the urxvt core, this returns "$term->ncol" if the
624     line is joined with the following one.
625    
626     $bool = $term->is_longer ($row_number)
627     Returns true if the row is part of a multiple-row logical "line"
628     (i.e. joined with the following row), which means all characters are
629     in use and it is continued on the next row (and possibly a
630     continuation of the previous row(s)).
631    
632     $line = $term->line ($row_number)
633     Create and return a new "urxvt::line" object that stores information
634     about the logical line that row $row_number is part of. It supports
635     the following methods:
636    
637 root 1.12 $text = $line->t ([$new_text])
638     Returns or replaces the full text of the line, similar to
639     "ROW_t"
640    
641     $rend = $line->r ([$new_rend])
642     Returns or replaces the full rendition array of the line,
643     similar to "ROW_r"
644 root 1.7
645     $length = $line->l
646     Returns the length of the line in cells, similar to "ROW_l".
647    
648     $rownum = $line->beg
649     $rownum = $line->end
650     Return the row number of the first/last row of the line,
651     respectively.
652    
653     $offset = $line->offset_of ($row, $col)
654     Returns the character offset of the given row|col pair within
655     the logical line.
656    
657     ($row, $col) = $line->coord_of ($offset)
658     Translates a string offset into terminal coordinates again.
659 root 1.4
660 root 1.15 $text = $term->special_encode $string
661 root 1.4 Converts a perl string into the special encoding used by
662     rxvt-unicode, where one character corresponds to one screen cell.
663     See "$term->ROW_t" for details.
664    
665     $string = $term->special_decode $text
666     Converts rxvt-unicodes text reprsentation into a perl string. See
667     "$term->ROW_t" for details.
668    
669 root 1.15 $success = $term->grab_button ($button, $modifiermask)
670 root 1.16 Registers a synchronous button grab. See the XGrabButton manpage.
671 root 1.15
672     $success = $term->grab ($eventtime[, $sync])
673     Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
674     synchronous ($sync is true). Also remembers the grab timestampe.
675    
676     $term->allow_events_async
677     Calls XAllowEvents with AsyncBoth for the most recent grab.
678    
679     $term->allow_events_sync
680     Calls XAllowEvents with SyncBoth for the most recent grab.
681    
682     $term->allow_events_replay
683     Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for
684     the most recent grab.
685    
686     $term->ungrab
687     Calls XUngrab for the most recent grab. Is called automatically on
688     evaluation errors, as it is better to lose the grab in the error
689     case as the session.
690    
691 root 1.13 The "urxvt::popup" Class
692 root 1.1 The "urxvt::timer" Class
693 root 1.13 This class implements timer watchers/events. Time is represented as
694     a fractional number of seconds since the epoch. Example:
695 root 1.1
696 root 1.13 $term->{overlay} = $term->overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
697     $term->{timer} = urxvt::timer
698     ->new
699     ->interval (1)
700     ->cb (sub {
701     $term->{overlay}->set (0, 0,
702     sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
703     });
704    
705     $timer = new urxvt::timer
706     Create a new timer object in started state. It is scheduled to
707     fire immediately.
708    
709     $timer = $timer->cb (sub { my ($timer) = @_; ... })
710     Set the callback to be called when the timer triggers.
711    
712     $tstamp = $timer->at
713     Return the time this watcher will fire next.
714    
715     $timer = $timer->set ($tstamp)
716     Set the time the event is generated to $tstamp.
717    
718     $timer = $timer->interval ($interval)
719     Normally (and when $interval is 0), the timer will automatically
720     stop after it has fired once. If $interval is non-zero, then the
721     timer is automatically rescheduled at the given intervals.
722 root 1.6
723 root 1.13 $timer = $timer->start
724     Start the timer.
725 root 1.1
726 root 1.13 $timer = $timer->start ($tstamp)
727     Set the event trigger time to $tstamp and start the timer.
728 root 1.1
729 root 1.13 $timer = $timer->stop
730     Stop the timer.
731 root 1.1
732     The "urxvt::iow" Class
733 root 1.13 This class implements io watchers/events. Example:
734 root 1.1
735 root 1.13 $term->{socket} = ...
736     $term->{iow} = urxvt::iow
737     ->new
738     ->fd (fileno $term->{socket})
739 root 1.17 ->events (urxvt::EVENT_READ)
740 root 1.13 ->start
741     ->cb (sub {
742     my ($iow, $revents) = @_;
743     # $revents must be 1 here, no need to check
744     sysread $term->{socket}, my $buf, 8192
745     or end-of-file;
746     });
747    
748     $iow = new urxvt::iow
749     Create a new io watcher object in stopped state.
750    
751     $iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })
752     Set the callback to be called when io events are triggered.
753     $reventmask is a bitset as described in the "events" method.
754    
755     $iow = $iow->fd ($fd)
756     Set the filedescriptor (not handle) to watch.
757    
758     $iow = $iow->events ($eventmask)
759 root 1.17 Set the event mask to watch. The only allowed values are
760     "urxvt::EVENT_READ" and "urxvt::EVENT_WRITE", which might be
761     ORed together, or "urxvt::EVENT_NONE".
762 root 1.1
763 root 1.13 $iow = $iow->start
764     Start watching for requested events on the given handle.
765 root 1.1
766 root 1.13 $iow = $iow->stop
767     Stop watching for events on the given filehandle.
768 root 1.1
769     ENVIRONMENT
770     URXVT_PERL_VERBOSITY
771 root 1.13 This variable controls the verbosity level of the perl extension.
772     Higher numbers indicate more verbose output.
773 root 1.1
774 root 1.15 == 0 - fatal messages
775     >= 3 - script loading and management
776     >=10 - all events received
777 root 1.1
778     AUTHOR
779 root 1.13 Marc Lehmann <pcg@goof.com>
780     http://software.schmorp.de/pkg/rxvt-unicode
781 root 1.1